0

我正在使用 Rails 3.2.8。当我生成带有时间字段或日期时间字段的脚手架时。HTML 表单字段预先填充了 UTC 中的当前日期/时间。很好,它预先填充了当前的日期/时间,但因为它是 UTC,我们必须每次将时间改回 7 小时(有时也需要将日期设置回 1,也可能是月份和年份)。然后似乎UTC时间存储在数据库中,所以如果我在本地时间记录它,我也会在显示/编辑它时遇到问题。

我查看了表单助手的 Ruby 文档以更好地处理本地时间,但我没有看到任何相关内容。

在 Rails 中处理和显示日期和时间的最佳方法是什么?

更新:为了澄清,我喜欢将 UTC 时间存储在数据库中的想法。我只希望time_selectdatetime_select表单助手编辑用户本地时区的时间。而且,当然,我想轻松地显示用户本地时区的时间。

4

2 回答 2

0

您必须将时区设置为在before/around_filter. 这必须像这样完成:

Time.zone = "Kyiv"

可以在其 API 中找到一个示例:http: //api.rubyonrails.org/classes/Time.html#method-c-zone-3D

运行rake time:zones:all以查看所有这些。

所有的转换都必须在幕后为您处理。

于 2012-10-01T19:12:05.747 回答
0

这在过去帮助了我。您可以执行以下操作:

Time.now.in_time_zone("Central Time (US & Canada)")

请参阅Rails:将 UTC DateTime 转换为另一个时区

于 2012-10-01T19:31:56.633 回答