【发布时间】:2013-04-28 06:52:42
【问题描述】:
我的消息表中有一个名为“已归档”的列和一个按钮,按下该按钮时会将当前时间和日期写入 db 列。现在我可以让它写时间,但是它在错误的时区。在网上查看后,我创建了以下代码,该代码当前正在保存,但不在正确的时区:
控制器代码
def archive_message
@message = Message.find(params[:id])
@message.archived = DateTime.now.in_time_zone "Central Time (US & Canada)"
@message.save
redirect_to '/messages'
end
我的路线(我相信这没问题)
post 'messages/:id/archive_message' => 'Messages#archive_message', :as => 'archive_message'
非常感谢任何建议。
【问题讨论】:
-
您是否尝试过使用 zoneinfo ID,例如美国/芝加哥?仅用于诊断目的。
-
我试过
code@message.archived = DateTime.now.in_time_zone "America/Chicago" 和code@message.archived = DateTime.now.in_time_zone "Central时间(美国和加拿大)” -
有人发帖将 config.time_zone = 'Central Time (US & Canada)' config.active_record.default_timezone = :local 添加到我的 application.rb 文件中。我将此添加到我的模块代码中,它似乎已经完全改变了日期和时间,现在它显示的时间是明天。
-
DateTime.current 应该返回应用指定时区的时间。
-
我在我的控制器中尝试了 DateTime.current 并将其设置为提前 5 小时。这很奇怪。
标签: ruby-on-rails time timezone