我有一个cron任务,每天运行一次,使用heroku的每日cron插件。cron从昨天的数据中获取值,并用今天的时间戳创建所需的对象。但是,我面临着不寻常的情况。这是来自Heroku控制台:

>> Date.today
=> Thu, 25 Aug 2011
>> Date.yesterday
=> Thu, 25 Aug 2011
>> DateTime.now
=> Thu, 25 Aug 2011 23:31:42 -0700

现在是23:31,我想稍后再试试。这就是我现在所拥有的:
>> Date.today
=> Fri, 26 Aug 2011
>> Date.yesterday
=> Thu, 25 Aug 2011
>> DateTime.now
=> Fri, 26 Aug 2011 00:35:14 -0700

任何关于date.today和date.exday的想法都提供了相同的结果。是因为时区还是其他特定设置?
谢谢

最佳答案

date.today根据服务器时间表示日期,而不考虑您设置的时区。
日期。昨天是时间。现在。在时区-1。天。这取决于我们设定的时区
这个例子应该说明:
ruby-1.9.2-p180 :014 > Time.now => 2011-08-26 03:21:10 +0545
ruby-1.9.2-p180 :015 > Time.zone => (GMT+00:00) UTC
ruby-1.9.2-p180 :016 > Time.now.in_time_zone => Thu, 25 Aug 2011 21:36:40 UTC +00:00
ruby-1.9.2-p180 :018 > Date.yesterday => Wed, 24 Aug 2011
ruby-1.9.2-p180 :017 > Date.today => Fri, 26 Aug 2011
现在,在将时区设置为加德满都之后。日期。昨天按预期变化,但今天没有变化。
ruby-1.9.2-p180 :019 > Time.zone="Kathmandu" => "Kathmandu"
ruby-1.9.2-p180 :022 > Time.now.in_time_zone => Fri, 26 Aug 2011 03:55:28 NPT +05:45
ruby-1.9.2-p180 :020 > Date.yesterday=> Thu, 25 Aug 2011
ruby-1.9.2-p180 :021 > Date.today => Fri, 26 Aug 2011

09-28 13:22