【问题标题】:DateTime.now not setting timezone in RailsDateTime.now 不在 Rails 中设置时区
【发布时间】: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


【解决方案1】:

再次编辑:好的,这是 UTC 时间,所以它正在工作。谢谢大家。

编辑:我刚刚关闭了重新启动的所有内容,现在它无法正常工作,它再次将时间节省了 5 个小时,我不知道为什么。

在 config/application.rb 在模块代码中添加以下内容

config.time_zone = 'Central Time (US & Canada)'
config.active_record.default_timezone = :local

和我的控制器

@message.archived = DateTime.current

谢谢大家

【讨论】:

    猜你喜欢
    • 2015-08-09
    • 2020-10-17
    • 2019-10-19
    • 1970-01-01
    • 2015-08-23
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多