ruby - Heroku 控制台奇怪的日期问题

标签 ruby ruby-on-rails-3 heroku

我有一个每天运行一次的 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/

相关文章:

ruby-on-rails - 使用 money gem 进行 rails 缓存(eu_central_bank)

ruby-on-rails-3 - Rails 3 CanCan 授权范围所有权

javascript - 页面上的表格太多 - 这是一个问题吗

ruby-on-rails - 在 ActionCable 中找不到订阅类 'MyChannel'

ruby-on-rails - 在 Ruby 中将字符串从 snake_case 转换为 CamelCase

ruby-on-rails - 接受用于填充 `url_for` 方法的 URL 参数是否安全?

java - 将 Heroku 应用程序更新到 Java 8

cookies - Rails 3,没有带有 :domain => :all 的本地 session cookie

heroku - 通过代理数据或通过 heroku 签署 url 从 S3 tiles 提供私有(private)映射?

ruby - 如何让 Ruby 释放未引用的内存?