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

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

time = Time.now.getutc 

理由:在我眼中,一个时间戳就是:一个时间点。 这可以准确地用一个对象来表示。 如果你需要其他的东西,一个标量值,比如Unix纪元以来的秒数,从1601开始的100-ns间隔,或者是一个用于显示目的的string,或者把时间戳存储在数据库中,你可以很容易的从这个对象中得到。 但这很大程度上取决于您的预期用途。

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

你可以使用: Time.now.to_i

在我看来,默认的格式不是很有用。 我更喜欢ISO8601,因为它可以sorting,相对紧凑和广泛认可:

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

通常时间戳没有时区。

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

在几秒钟内给出粒度的时间戳有什么好处? 我发现使用Time.now.to_f更加实际。 哎呀,你甚至可以抛出一个to_s.sub('。','')去除小数点,或者像这样执行一个types转换:Integer(1e6 * Time.now.to_f)。

Time.utc(2010, 05, 17)

正确的方法是做一个Time.now.getutc.to_i来获得适当的时间戳量,因为简单地显示整数不需要总是与由于时区差异而导致的utc时间戳相同。