Rails从哪里获取DateTime.now?

时间:2018-10-29 09:27:40

标签: ruby-on-rails datetime

最近我想更改帖子的updated_at列,但这不是那么简单!

不过,服务器时间是12:06,当我使用控制台(irb)时是12:06 还尝试过:

irb(main):001:0> Time.zone.to_s
=> "(GMT+03:00) Moscow"

我仍然在这样做:

post.update!(updated_at: DateTime.now)
=> true

如果我检索记录,则结果为“ 2018-10-29 09:06:47”

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

尝试使用DateTime.current-如果您的应用运行于同一时间,则会获得分区时间。

从文档中

  

设置了Time.zone或config.time_zone时返回Time.zone.now.to_datetime,否则返回Time.now.to_datetime。

基本上,Time.zone应该反映DateTime.current,如果您使用的是时区,而Time.nowDateTime.now将忽略任何时区。该方法的来源在这里很容易解释:

def current
  ::Time.zone ? ::Time.zone.now.to_datetime : ::Time.now.to_datetime
end

希望有帮助-如果您有任何疑问,请给我喊一声。