如何在Ruby中获取UTC时间戳?

时间:2010-05-31 11:03:15

标签: ruby timestamp

如何在Ruby中获取UTC时间戳?

9 个答案:

答案 0 :(得分:228)

您可以使用:Time.now.to_i

答案 1 :(得分:107)

time = Time.now.getutc

理由:在我看来,时间戳恰好是:时间点。这可以用对象准确地表示。如果您还需要其他任何标量值,例如:自Unix纪元以来的秒数,自1601以来的100-ns间隔,或者可能是用于显示目的的字符串或将时间戳存储在数据库中,您可以从对象中轻松获取。但这在很大程度上取决于您的预期用途。

说“真正的时间戳是自Unix时代以来的秒数«有点遗漏这一点,因为这是一种表示某个时间点的方式,但它还需要额外的信息,甚至知道你在处理时间而不是数字。 Time对象通过表示的时间点并明确表示它是来很好地解决了这个问题。

答案 2 :(得分:42)

在我看来,默认格式不是很有用。我更喜欢ISO8601,因为它可以排序,相对紧凑并得到广泛认可:

>> require 'time'
=> true
>> Time.now.utc.iso8601
=> "2011-07-28T23:14:04Z"

答案 3 :(得分:14)

通常时间戳没有时区。

% irb
> Time.now.to_i == Time.now.getutc.to_i
=> true

答案 4 :(得分:6)

以秒为单位给出粒度的时间戳有什么用呢?我觉得使用Time.now.to_f更加实用。哎呀,你甚至可以抛出一个to_s.sub('。''')来摆脱小数点,或执行类似这样的类型转换:整数(1e6 *时间.now.to_f)。

答案 5 :(得分:2)

Time.utc(2010, 05, 17)

答案 6 :(得分:0)

如果您需要人类可读的时间戳(例如rails migration具有)。 “ 20190527141340

Time.now.utc.to_formatted_s(:number)  # using Rails

Time.now.utc.strftime("%Y%m%d%H%M%S") # using Ruby

答案 7 :(得分:-1)

time = Time.zone.now()

它可以作为

irb> Time.zone.now
=> 2017-12-02 12:06:41 UTC

答案 8 :(得分:-5)

正确的方法是执行Time.now.getutc.to_i以获得正确的时间戳数量,因为时区差异显示整数不必总是与utc时间戳相同。