我有一个每天运行一次的 cron 任务,使用 Heroku 的 Daily 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.yesterday 提供相同的结果?是由于时区或其他某些设置造成的吗?
谢谢
最佳答案
Date.today 表示根据您的服务器时间的日期,与您设置的时区无关。
Date.yesterday 是 Time.now.in_time_zone - 1.day。这取决于我们设置的Time.zone
这个例子应该可以澄清这一点:
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 => 2011 年 8 月 25 日星期四 21:36:40 UTC +00:00
ruby-1.9.2-p180 :018 > Date.yesterday => 2011 年 8 月 24 日星期三
ruby-1.9.2-p180 :017 > Date.today => 2011 年 8 月 26 日星期五
现在,将时区设置为加德满都后。 Date.yesterday 按预期更改,但 Date.today 没有更改
ruby-1.9.2-p180 :019 > Time.zone="加德满都"=> "加德满都"
ruby-1.9.2-p180 :022 > Time.now.in_time_zone => 2011 年 8 月 26 日星期五 03:55:28 NPT +05:45
ruby-1.9.2-p180 :020 > Date.yesterday=> 2011 年 8 月 25 日星期四
ruby-1.9.2-p180 :021 > Date.today => 2011 年 8 月 26 日星期五
关于ruby - Heroku 控制台奇怪的日期问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7201771/