2

您好,我有一张带票的表,其中我有 DATETIME 格式的 valid_from 列和 INTEGER 的有效性列。现在我需要找出票有效的天数(无效的天数)。我使用整数转换为获取天数,但看起来返回的不是天数。

>> valid_from #DATETIME
=> Thu, 12 Sep 2013 18:24:52 UTC +00:00
>> validity #INTEGER
=> 14
>> DateTime.now
=> Sat, 14 Sep 2013 13:17:32 -0500
>> ((valid_from + validity.days) - DateTime.now.utc).to_i
=> 1037228

命令((valid_from + validity.days) - DateTime.now.utc).to_i返回 1037228 天.. 哪里出错了?谢谢你

编辑:

((valid_from + validity.days) - DateTime.now.utc).days

返回 1036588.3133747578 天

4

2 回答 2

2

这在我的机器上工作得很好,给

valid_from = DateTime.now.utc - 2.days
=> Thu, 12 Sep 2013 18:34:45 +0000 
valid_from
=> Thu, 12 Sep 2013 18:34:45 +0000 
validity
=> 14 
DateTime.now
=> Sat, 14 Sep 2013 11:35:11 -0700 
((valid_from + validity.days) - DateTime.now.utc).to_i
=> 11

我认为您的公式没有错误等。您机器上的时间设置可能有问题;检查以确保您在所有地方都使用相同的时区。

编辑

刚刚意识到你valid_from的格式不同。valid_from.to_datetime尝试在您的公式中替换它。

于 2013-09-14T18:37:25.373 回答
0

让我们试着写这样的东西:

((valid_from + validity.days) - Date.today).to_i
于 2013-09-14T18:36:23.637 回答