Как получить метку времени UTC в Ruby? - PullRequest
124 голосов
/ 31 мая 2010

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

Ответы [ 9 ]

232 голосов
/ 31 мая 2010

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

108 голосов
/ 31 мая 2010
time = Time.now.getutc

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

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

43 голосов
/ 29 июля 2011

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

>> require 'time'
=> true
>> Time.now.utc.iso8601
=> "2011-07-28T23:14:04Z"
14 голосов
/ 21 февраля 2014

Обычно у временной метки нет часового пояса.

% irb
> Time.now.to_i == Time.now.getutc.to_i
=> true
6 голосов
/ 16 марта 2014

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

2 голосов
/ 31 мая 2010

Time.utc(2010, 05, 17)

0 голосов
/ 27 мая 2019

если вам нужна удобочитаемая временная метка (как у рельсовых миграций) ex. " 20190527141340 "

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

Time.now.utc.strftime("%Y%m%d%H%M%S") # using Ruby
0 голосов
/ 02 декабря 2017

time = Time.zone.now()

Это будет работать как

irb> Time.zone.now
=> 2017-12-02 12:06:41 UTC
0 голосов
/ 11 сентября 2013

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...