Как получить метку времени UTC в Ruby?

Как получить метку времени UTC в Ruby?

8 ответов


time = Time.now.getutc

обоснование: в моих глазах метка времени-это именно то, что: точка во времени. Это можно точно представить с помощью объекта. Если вам нужно что-то еще, скалярное значение, например секунды с эпохи Unix, интервалы 100 нс с 1601 года или, возможно, строка для отображения или хранения метки времени в базе данных, вы можете легко получить это от объекта. Но это во многом зависит от вашего предназначения.

говоря ,что " истинная метка времени-это число секунды с эпохи Unix " немного не хватает точки, так как это один способ представления точки во времени, но ему также нужна дополнительная информация, чтобы даже знать, что вы имеете дело со временем, а не с числом. А Time объект решает эту проблему красиво, представляя точку во времени а также будучи явным о том, что это.


вы можете использовать: Time.now.to_i.


форматирование по умолчанию не очень полезно, на мой взгляд. Я предпочитаю ISO8601, поскольку он сортируемый, относительно компактный и широко признанный:

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

обычно метка имеет пояс.

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

Что хорошего в метке времени с ее детализацией, заданной в секундах? Я считаю, что гораздо практичнее работать со временем.сейчас же.to_f. Черт, вы даже можете бросить to_s.sub ('.', "), чтобы избавиться от десятичной точки, или выполнить типаж, как это: Integer(1e6*Time.сейчас же.to_f).


Time.utc(2010, 05, 17)


time = Time.zone.now()

Он будет работать как

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

правильный способ-сделать Time.now.getutc.to_i чтобы получить правильную сумму метки времени, просто отображая целое число, не всегда должно совпадать с меткой времени utc из-за различий в часовых поясах.