默认情况下,Rails'config.time_zone
是UTC。因此,created_at
,updated_at
等字段以UTC格式保存。
现在,假定用户的时区是太平洋标准时间(PST)。
为了在用户的时区显示日期和时间,我已将Time.zone
设置为PST。
现在,当用户在表单中输入日期(在用户的本地时区,即PST)时,控制器会根据Time.zone
的设置收到该日期。
但是,我希望以UTC格式保存数据库中的所有时间。
那么,我如何将参数哈希中的任何日期/时间字段转换为UTC?我想知道是否有一个Rails可以自动进行转换的解决方案?
我希望任何日期时间字段收到的日期/时间都转换为UTC,而不必在每个控制器中写入转换代码。
我通过将Time.zone设置为Pacific Time (US & Canada)
以及Eastern Time (US & Canada)
进行测试,然后保存模型。两个案例中的created_at
时间都在UTC
。这样确认设置Time.zone
对created_at
字段中Rails保存的时间没有影响。该值仅由config.time_zone
实现(如果未在application.rb
中定义,则默认为UTC)
我对这一切感到困惑!
答案 0 :(得分:1)
在数据库中,所有日期始终保存为UTC。 config.time_zone参数设置Time.zone的默认值,仅用于显示。因此,您无需执行任何操作即可获得所需的行为,只需为用户正确设置Time.zone,rails将负责其余操作。