您好,我有一个带有票证的表,其中有 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 天
最佳答案
这在我的机器上运行得很好,给出
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
。
关于ruby-on-rails - Rails 的 now 和created_at 之间的日期差异(以天为单位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18805025/