Ruby / Rail中如何将日期转换为UNIX时间戳?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (3)
  • 关注 (0)
  • 查看 (318)

我如何从Rails应用程序中的Date对象获取UNIX时间戳?

我知道时间#to_i返回一个时间戳,但做日期#to_time,然后得到的时间戳结果是关闭了一个月左右(不知道为什么...)。

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

编辑:好吧,我想我已经知道了 - 我正在循环处理一个日期几次,每次日期因为时区不匹配而被移动一点,最终导致我的时间戳被关闭一个月。 不过,我还是有兴趣知道是否有任何方法可以做到这一点,而不依赖Date#to_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"
用户回答回答于

当我尝试时,我会得到以下信息:

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

这两个数字之间的差异是因为Date不存储当前时间的小时、分钟或秒。转换Date转到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

请注意中间日期时间对象是本地时间,因此时间戳可能与您预期的时间间隔数小时。如果您想在UTC时间内工作,可以使用datetime的方法“to_utc“。

扫码关注云+社区

领取腾讯云代金券