Time.now和1.day.ago之间的时区差异

时间:2014-03-20 20:12:35

标签: ruby ruby-on-rails-3 timezone

我的应用time_zone设置为UTC(默认情况下,我没有在config / application.rb中更改它。)

这是我在rails console中看到的

1.9.3p194 :004 > Time.now
 => 2014-03-20 14:45:23 -0500 
1.9.3p194 :005 > 1.day.ago
 => Wed, 19 Mar 2014 19:45:48 UTC +00:00

为什么我Time.now时会在中央获得时间?它应该以{{1​​}}

返回UTC时间

2 个答案:

答案 0 :(得分:2)

Time.now使用运行它的机器的区域设置。为保持一致性,您可以执行Time.now.utc强制UTC:

1.9.3-p484 :001 > Time.now
2014-03-20 16:14:23 -0400
1.9.3-p484 :002 > Time.now.utc
2014-03-20 20:14:26 UTC

答案 1 :(得分:0)

使用Time.zone.now - 它会考虑您的应用程序的时区:

项目默认为TZ:

2.0.0-p353 :001 > Time.now
 => 2014-04-01 23:12:06 +0300 
2.0.0-p353 :002 > Time.zone.now
 => Tue, 01 Apr 2014 20:12:11 UTC +00:00 
2.0.0-p353 :003 >

使用自定义TZ项目:

2.1.0 :001 > Time.now
 => 2014-04-01 23:14:23 +0300 
2.1.0 :002 > Time.zone.now
 => Tue, 01 Apr 2014 22:14:27 CEST +02:00 
2.1.0 :003 >

在这里,您将找到有关使用时区的更多有用信息(特别是看看DO和DONT部分):

http://www.elabs.se/blog/36-working-with-time-zones-in-ruby-on-rails