在 config/application.rb 中,我的文件中有“config.time_zone = 'UTC'”(不带引号)。我假设这是为了将输入到视图中的用户时间转换为存储在数据库中的 UTC。我的问题是,如何将数据库中的 UTC 值转换为用户的本地时间以显示在视图中?我读到 Rails 会自动处理这个问题 - 我如何告诉它这样做?
我在数据库中每个用户的行中有一个时区字段,我只是不确定在那里存储什么。我知道 rake time:zones:all - 我只是不知道所有这些如何在 Rails 3 中组合在一起!
谢谢你,
sk
在多区域环境中工作时,明智的做法是将时区设置为 UTC。这在您的 application.rb 中完全有效
Rails 会自动将所有时间转换为当前时区,可以设置为
Time.zone = "some-zone"
我用的是一个过滤前在 ApplicationController 中,我根据当前用户设置时区。然后所有操作都在这个区域内进行,您不需要在控制器/模型/视图中考虑它。
假设您有一些带有日期时间字段的模型 Foo。然后在 irb 控制台中工作:
Time.zone = "Prague"
x = Foo.create(:it_will_happen_at => Time.zone.now)
x.it_will_happen_at # => Sat, 25 Sep 2010 13:45:46 CEST +02:00
Time.zone = "London"
# it is needed to refresh the field after a time zone has changed.
# In normal situation it'd not be needed, it's just for this console example
x.reload
x.it_will_happen_at # => Sat, 25 Sep 2010 12:44:46 BST +01:00
当您查看数据库时,您会发现该值是 Sat, 25 Sep 2010 11:45:46 UTC。
至于区域值,我更喜欢城市名称,因为它可以与夏令时(夏季/冬季时间)顺利配合。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)