Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Time.now和1.day.ago之间的时区差_Ruby_Ruby On Rails 3_Timezone - Fatal编程技术网

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

Ruby Time.now和1.day.ago之间的时区差,ruby,ruby-on-rails-3,timezone,Ruby,Ruby On Rails 3,Timezone,我的应用程序时区设置为UTC(默认情况下,我没有在config/application.rb中更改它) 这是我在rails控制台中看到的 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 为什么我现在在中央银行获得时间?它应该返回UTC时间,如1.day.ago时间。现在使

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

这是我在rails控制台中看到的

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

为什么我现在在中央银行获得时间?它应该返回UTC时间,如
1.day.ago
时间。现在
使用它运行的机器的区域设置。为了保持一致性,您可以执行
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

使用
时区。现在
-它将考虑应用程序的时区:

具有默认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 >
在这里,您可以找到有关使用时区的更多有用信息(特别是查看“应做和不应做”部分):