如何在POST参数中处理日期/时间?

时间:2011-02-22 03:25:30

标签: ruby-on-rails-3

默认情况下,Rails'config.time_zone是UTC。因此,created_atupdated_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.zonecreated_at字段中Rails保存的时间没有影响。该值仅由config.time_zone实现(如果未在application.rb中定义,则默认为UTC)

我对这一切感到困惑!

1 个答案:

答案 0 :(得分:1)

在数据库中,所有日期始终保存为UTC。 config.time_zone参数设置Time.zone的默认值,仅用于显示。因此,您无需执行任何操作即可获得所需的行为,只需为用户正确设置Time.zone,rails将负责其余操作。