我有一个存储时间值的Rails应用程序,我在config / application.rb中设置了一个时区。
这在datetime列上正常工作,但时间列以UTC显示时间,而不是指定的时区。
这两个示例的时间都以20:50(UTC)的形式存储在数据库中,但是当我在视图中显示时,时间列显示为UTC,并且日期时间列在所选时区中正确显示。
time2: 2000-01-01 20:50:00 UTC
datetime2: 2012-02-09 21:50:00 +0100
这是预期的行为吗?不应该使用配置的时区吗?
答案 0 :(得分:2)
ActiveRecord使用TimeWithZone,localtime
,utc
,utc?
等方法可以为您提供帮助。
答案 1 :(得分:0)
是的,这是预期的行为。 Rails(ActiveRecord)以UTC格式存储时间,然后将它们转换为在视图中呈现时设置为Time.zone
的任何时区。
答案 2 :(得分:0)
我放弃了这一点,Rails似乎完全忽略了带有时间属性的config.time_zone,并且仅仅因为我不理解的原因而将它用于datetime属性。而且看起来并没有其他人理解它。
我将时间属性更改为键入字符串,并在需要将其作为时间对象处理时将其解析为时间对象。如果在以后的Rails版本中修复了这个问题,我总是可以改回使用时间属性,但现在我需要继续,这已经让我好几天了。
但是感谢您试图提供帮助:)