Answers:
该代码date.to_time.to_i
应该可以正常工作。下面的Rails控制台会话显示了一个示例:
>> Date.new(2009,11,26).to_time
=> Thu Nov 26 00:00:00 -0800 2009
>> Date.new(2009,11,26).to_time.to_i
=> 1259222400
>> Time.at(1259222400)
=> Thu Nov 26 00:00:00 -0800 2009
请注意,中间的DateTime对象位于本地时间,因此时间戳可能会比您期望的晚几个小时。如果要在UTC时间工作,可以使用DateTime的方法“ to_utc”。
date.to_time.utc
可能就是他的意思。
尝试时得到以下信息:
>> Date.today.to_time.to_i
=> 1259244000
>> Time.now.to_i
=> 1259275709
这两个数字之间的差异是由于Date
未存储当前时间的小时,分钟或秒。将a转换Date
为a Time
将导致当天的午夜。
使用to_utc
或utc
修复本地时间偏移的建议选项不起作用。对我来说,我发现使用Time.utc()
工作正常,并且代码涉及的步骤更少:
> Time.utc(2016, 12, 25).to_i
=> 1482624000 # correct
与
> Date.new(2016, 12, 25).to_time.utc.to_i
=> 1482584400 # incorrect
这是在使用Date
... 后调用utc时发生的情况。
> Date.new(2016, 12, 25).to_time
=> 2016-12-25 00:00:00 +1100 # This will use your system's time offset
> Date.new(2016, 12, 25).to_time.utc
=> 2016-12-24 13:00:00 UTC
...如此明确地打电话to_i
将给错误的时间戳。
to_utc