首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Date.today与实际日期不符

Date.today与实际日期不符
EN

Stack Overflow用户
提问于 2016-02-03 04:52:19
回答 2查看 213关注 0票数 1

在使用Date.today方法时,我注意到我的日志中有一个关于当前时间的非常奇怪的问题。基本上,我有一个cron作业(使用时钟),它在每晚00:00运行,检查哪些订阅是到期的,以便它尝试自动续订它们。作业执行一个方法,该方法依次执行一个查询,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
where("date(active_until) <= ?", Date.today)

大多数情况下,这是正确执行的。然而,从我的日志观察来看,似乎有一些时候Date.today与实际日期不一致。从我的日志中摘录:

注意:日期是在将来,因为我是手动设置时间来测试它是否正确执行。

代码语言:javascript
代码运行次数:0
运行
复制
D, [2016-05-01T00:00:00.015901 #21699] DEBUG -- :   Subscription Load (2.6ms)  SELECT "subscriptions".* FROM "subscriptions" WHERE date(active_until) <= '2016-04-30'

D, [2016-05-02T00:00:00.011130 #21721] DEBUG -- :   Subscription Load (2.2ms)  SELECT "subscriptions".* FROM "subscriptions" WHERE date(active_until) <= '2016-05-02'

如果查看第一种情况,您将看到该语句是在2016-05-01T00:00:00.015901上执行的,而Date.today生成了2016-04-30。第二种情况显然是正确的,因为日志日期对应于Date.today。

最大的问题是我不能复制它。我从我的日志中看到的唯一一件事是,24次中有3次发生过。这里的问题可能是什么?有没有可能Rails以某种方式缓存了查询的输入参数?

我的Ruby版本是: ruby 2.2.1p85 (2015.02-26Revision 49769) x86_64-linux

我的Rails版本是: 4.2.1

EN

回答 2

Stack Overflow用户

发布于 2016-02-03 05:06:03

确保在config/application.rb文件中将时区设置为您正在测试的实际时区:

对于PST,我们使用:

config.time_zone = 'Pacific Time (US & Canada)'

要获取rails可使用的时区字符串列表,请运行以下命令:

rake time:zones:all

您还可以给它一个更具体的语言环境。对于美国:

rake time:zones:us

票数 0
EN

Stack Overflow用户

发布于 2016-02-03 05:15:15

由于这种情况发生在午夜左右,我认为这是一个时间问题,在执行生成条目的脚本之后,日志文件会稍有更新。可能与负载相关,因为日志记录工具与发送日志条目的脚本是分开的。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35163560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档