Rails时间类型和时区

时间:2012-02-10 21:15:06

标签: ruby-on-rails timezone

我有一个存储时间值的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

这是预期的行为吗?不应该使用配置的时区吗?

3 个答案:

答案 0 :(得分:2)

ActiveRecord使用TimeWithZonelocaltimeutcutc?等方法可以为您提供帮助。

答案 1 :(得分:0)

是的,这是预期的行为。 Rails(ActiveRecord)以UTC格式存储时间,然后将它们转换为在视图中呈现时设置为Time.zone的任何时区。

答案 2 :(得分:0)

我放弃了这一点,Rails似乎完全忽略了带有时间属性的config.time_zone,并且仅仅因为我不理解的原因而将它用于datetime属性。而且看起来并没有其他人理解它。

我将时间属性更改为键入字符串,并在需要将其作为时间对象处理时将其解析为时间对象。如果在以后的Rails版本中修复了这个问题,我总是可以改回使用时间属性,但现在我需要继续,这已经让我好几天了。

但是感谢您试图提供帮助:)