Ruby/Rails: 将日期转换为UNIX时间戳

19 浏览
0 Comments

Ruby/Rails: 将日期转换为UNIX时间戳

我应该如何在Rails应用程序中从Date对象获取UNIX时间戳(1970年GMT起的秒数)?

我知道Time#to_i返回时间戳,但是使用Date#to_time然后获取时间戳会导致结果差约一个月(不确定为什么...)。

感谢任何帮助!

编辑:好吧,我想我搞明白了-我在循环中多次处理了一个日期,每次日期都因为时区不匹配而移动了一点,最终导致我的时间戳相差一个月。尽管如此,我仍然有兴趣知道是否有任何方法可以不依赖于Date#to_time来完成此操作。

admin 更改状态以发布 2023年5月24日
0
0 Comments

当我尝试它时,会得到以下内容:

>> Date.today.to_time.to_i
=> 1259244000
>> Time.now.to_i
=> 1259275709

这两个数字之间的差异是因为Date不存储当前时间的小时、分钟或秒。将Date转换为Time将导致该天午夜。

0
0 Comments

代码 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的方法"utc"。

0