如何在Ruby中获取UTC时间戳?
如何在Ruby中获取UTC时间戳?
Answers:
time = Time.now.getutc
理由:在我眼中,时间戳就是:时间点。可以用一个对象准确地表示出来。如果您还需要其他标量值,例如距Unix纪元以来的秒数,自1601年以来的100 ns间隔,或者可能是用于显示目的或将时间戳记存储在数据库中的字符串,则可以从对象中轻松获取。但这在很大程度上取决于您的预期用途。
说“真正的时间戳”是自Unix纪元以来的秒数,这有点失误,因为这是表示时间点的一种方式,但它还需要其他信息才能知道您正在处理时间而不是数字。一个Time
对象通过表示一个时间点并且明确表示什么是一个很好的解决这个问题的方法。
我认为默认格式不是很有用。我更喜欢ISO8601,因为它可排序,相对紧凑并且得到广泛认可:
>> require 'time'
=> true
>> Time.now.utc.iso8601
=> "2011-07-28T23:14:04Z"
/usr/share/ruby/2.0/time.rb
。
通常时间戳没有时区。
% irb
> Time.now.to_i == Time.now.getutc.to_i
=> true
to_f
会更好
例如,如果您需要人类可读的时间戳(例如rails migration具有)。“ 20190527141340 ”
Time.now.utc.to_formatted_s(:number) # using Rails
Time.now.utc.strftime("%Y%m%d%H%M%S") # using Ruby
time = Time.zone.now()
它将作为
irb> Time.zone.now
=> 2017-12-02 12:06:41 UTC
正确的方法是执行操作Time.now.getutc.to_i
以获取正确的时间戳量,因为由于时区不同,仅显示整数不必总是与utc时间戳相同。