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