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

我如何从Rails应用程序中的Date对象获得UNIX时间戳(自格林威治标准时间以来的秒数)?

我知道Time#to_i返回一个时间戳,但是执行Date#to_time ,然后获取时间戳会导致大约一个月内关闭的事情(不知道为什么......)。

任何帮助表示赞赏,谢谢!

编辑:好的,我想我已经弄明白了 - 我在循环中多次处理一个日期,并且每次由于时区不匹配而使日期稍微移动一点,最终导致我的时间戳一个月。 不过,我仍然有兴趣了解是否有任何方法可以在不依赖Date#to_time情况下执行此Date#to_time


代码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.today.to_time.to_i
=> 1259244000
>> Time.now.to_i
=> 1259275709

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


当你有一个任意的DateTime对象时,用于Ruby 1.8的解决方案:

1.8.7-p374 :001 > require 'date'
 => true 
1.8.7-p374 :002 > DateTime.new(2012, 1, 15).strftime('%s')
 => "1326585600"
链接地址: http://www.djcxy.com/p/36905.html

上一篇: Ruby/Rails: converting a Date to a UNIX timestamp

下一篇: HashMap get/put complexity