Tag: 时区

Rails 3:将时区设置为当前用户时区

我把它放在Application Controller中: before_filter :set_timezone def set_timezone Time.zone = current_user.time_zone end 但我总是得到错误: undefined method time_zone for # 而我只是不知道为什么…… 我希望有人能帮帮忙

如何在不同时区显示Rails表单日期时间选择?

我想在其首选时区向用户提供日期时间选择,但将日期时间存储为UTC。 目前,默认行为是使用UTC显示和存储日期时间字段。 如何在不影响整个应用程序的情况下更改此字段的行为(即不更改应用程序默认时区)? 更新:这不是每用户时区。 我不需要调整时间显示方式。 只有这些特定字段处理不同的时区,所以我希望用户能够指定此时区的时间。

Ruby – 获得下一个夏令时的变化

我知道有一种方法可以确定某一时间是否在夏令时( Time.now.dst? )上,但是有一种方法可以为我们提供夏令时改变时的下一个日期吗? 例如,Google Sunday, November 1作为2015年下一个夏令时更改。

Rails:时区之间的差异,以小时为单位

我希望能够说user1 is 4 hours ahead of user2 ,根据用户在其帐户中指定的时区计算。 使用以下代码: time1 = Time.zone.now.in_time_zone(user1.time_zone) time2 = Time.zone.now.in_time_zone(user2.time_zone) distance_of_time_in_words time1,time2 …给出less than a minute的差异 – 同样减去两次给出0 。 Rails显然仍然认为这两次是相同的。 知道如何计算两个时区之间的差异吗?

Rails中的DateTime比较失败

由于某种原因,比较总是失败,请从Rails控制台检查: irb(main):021:0> @game.game_date.class => ActiveSupport::TimeWithZone irb(main):026:0> @game.game_date => Tue, 19 Feb 2013 23:15:00 UTC +00:00 irb(main):022:0> @game.game_date.to_datetime => Tue, 19 Feb 2013 23:15:00 +0000 irb(main):019:0> DateTime.now => Tue, 19 Feb 2013 23:48:38 +0330 irb(main):020:0> @game.game_date.to_datetime > DateTime.now => true 怎么比较总是错的? 我也尝试过这个: @game.game_date.to_time > Time.now.to_tim 结果也是如此,但很明显它应该是假的,因为23:48> 23:15:00。 请注意,我在ubuntu和Rails 3.1下使用ruby ruby​​ 1.9.3p0 任何帮助将受到高度赞赏

Rails时区问题

这是我的控制台: irb(main):048:0> Time.now => 2011-04-13 00:51:50 +0200 (@stats[5] == ‘-‘ ? 0 : @stats[3]), :earn => @stats[6]) => # irb(main):050:0> 正如你所知,当我创建一个新项目updated_at和created_at是“2011-04-12 22:52:13”而不是正确的时间:2011-04-13 00:51:50

如何将Rails时区名称映射到PostgreSQL?

我需要使用类似的查询 SELECT * FROM items WHERE to_char(created_at AT TIME ZONE ‘RAILS_GIVEN_ZONE’, ‘DD/MM/YYYY’) ILIKE ‘%5/02%’ 其中RAILS_GIVEN_ZONE值应始终使用Rails 4应用程序的时区(可由用户更改),而不是PG的timezone选项。 但问题是Rails和PG的时区并不完全对应1对1。 使用偏移量(如Time.zone.now.formatted_offset中的+10:00 )还不够好,因为在这种情况下,PG将无法正确处理夏令时。 所以问题是什么是自动将Rails当前时区( Time.zone )映射到PostgreSQL的指定时区的最佳方法? 注意: create_at列是timestamptz (存储为UTC,显示在任何需要的区域中)

我如何使用Ruby来解析时间,就好像它在我指定的时区中一样,区域的格式为America / Los_Angeles?

我希望能够从Ruby(1.8.7)中的字符串解析Time,其中字符串不包含任何时区信息。 我想把字符串看作是在这种格式中指定的任何时区中的任何一个:’America / New_York’。 时间字符串示例: ‘2010-02-05 01:00:01’ 我花了很长时间试图弄清楚这个。 我确实找到了类似的问题,但它的答案并不适用于我的情况: 我如何让Ruby解析时间,好像它处于不同的时区? 上述解决方案的问题在于我的时区不能全部用Time.parse支持的3字母格式表示( http://www.ruby-doc.org/stdlib-1.8.7/libdoc/time/rdoc /classes/Time.html#M004931 )。 有没有一个好方法来完成我在这里要做的事情? 编辑:我的回答实际上是一个答案。

有谁知道如何在rails 2.3中适当处理用户时区?

我们正在构建一个需要在多个时区显示日期(更重要的是,计算它们)的rails应用程序。 谁能指出我如何在rails 2.3(.5或.8)中使用用户时区 我见过的最具包容性的文章详细说明了用户时区应该如何工作: http : //wiki.rubyonrails.org/howtos/time-zones …虽然目前还不清楚这是什么时候编写的或版本是什么铁轨。 具体而言,它指出: “Time.zone – 实际用于显示目的的时区。可以手动设置,以基于每个请求覆盖config.time_zone。” 键术语是“显示目的”和“按请求基础”。 在我的机器上,这是真的。 然而,在生产中,两者都不是真的。 设置Time.zone持续超过请求的结束(对所有后续请求)并且还影响AR保存到DB的方式(基本上将任何日期视为已经在UTC中,即使它不是),从而保存完全不合适的值。 我们与乘客一起运行Ruby Enterprise Edition。 如果这是我的问题,我们是否需要切换到JRuby或其他? 为了说明这个问题,我现在在ApplicationController中添加了以下操作: def test p_time = Time.now.utc s_time = Time.utc(p_time.year, p_time.month, p_time.day, p_time.hour) logger.error “TIME.ZONE” + Time.zone.inspect logger.error ENV[‘TZ’].inspect logger.error p_time.inspect logger.error s_time.inspect jl = JunkLead.create! jl.date_at = s_time logger.error s_time.inspect logger.error jl.date_at.inspect jl.save! logger.error s_time.inspect […]

ruby在给定时区内得到时间

在ruby中,我如何获得给定时区的当前时间? 我知道与UTC的偏移量,并希望获得具有该偏移量的时区中的当前时间。