我对RoR比较陌生,而且我在时区转换方面遇到了麻烦。当从数据库中获取数据(存储在美国中部时间)时,它认为其中的时间是UTC并尝试转换它们,因此在5小时内将它们弄错。我在application.rb文件中有这个:
config.time_zone = 'Central Time (US & Canada)'
config.active_record.default_timezone = 'Central Time (US & Canada)'
如果我删除其中一个配置指令,则时间无法正确保存。只要我有它们,时间就可以正确地存储在数据库中,但是RoR无法正确读取它们。为了解决这个问题,我必须将从数据库获得的所有时间转换为UTC。我必须相信有更好的方法。
我也试过设置ENV ['TZ'],但这似乎没有做任何事情。
ENV['TZ'] = "US/Central"
任何帮助都会被贬低。
谢谢!
答案 0 :(得分:0)
对我来说,实际上,AR拒绝将值设置为:utc /:local
config.active_record.default_timezone = 'Central Time (US & Canada)'
这一行结束时,日志中充满了回落到本地
的警告什么有效是完全切换系统时区
ENV['TZ'] = "US/Central"
确保使用正确的tz名称。 Unix时区名称不是ActiveSupport :: TimeZone
使用的名称请参阅此
的 ActiveSupport :: TimeZone :: MAPPING另外,请注意此Time.now == Time.current;它也会在指定的时区内给出时间;
所以这更像是一种黑客而非解决方案。