如何在Ruby中获取UTC时间戳?
答案 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时间戳相同。