Как получить метку времени UTC в Ruby?
Как получить временную метку UTC в Ruby?
Ответ 1
time = Time.now.getutc
Обоснование: на мой взгляд, отметка времени - это то, что: момент времени. Это может быть точно представлено объекту. Если вам нужно что-то еще, скалярное значение, например. секунд с момента Unix, 100-ns интервалов с 1601 года или, может быть, строки для отображения или хранения метки времени в базе данных, вы можете легко получить это от объекта. Но это сильно зависит от вашего предполагаемого использования.
Говоря, что "истинная временная метка - это количество секунд, так как эпоха Unix" немного не хватает точки, поскольку это один из способов представления точки во времени, но она также нуждается в дополнительной информации, чтобы даже знать, пересмотр времени, а не числа. Объект Time
решает эту проблему красиво, представляя точку во времени, а также явную информацию о том, что это такое.
Ответ 2
Вы можете использовать: Time.now.to_i
.
Ответ 3
Форматирование по умолчанию не очень полезно, на мой взгляд. Я предпочитаю ISO8601, поскольку он сортируемый, относительно компактный и широко признанный:
>> require 'time'
=> true
>> Time.now.utc.iso8601
=> "2011-07-28T23:14:04Z"
Ответ 4
Обычно метка времени не имеет часовой пояс.
% irb
> Time.now.to_i == Time.now.getutc.to_i
=> true
Ответ 5
Какая польза от временной отметки с ее детализацией в секундах? Я нахожу его гораздо более практичным, работая с Time.now.to_f. Черт, вы можете даже выбросить to_s.sub('.', ''), Чтобы избавиться от десятичной точки, или выполнить такой тип: Integer (1e6 * Time.now.to_f).
Ответ 6
Time.utc(2010, 05, 17)
Ответ 7
если вам нужна удобочитаемая временная метка (как у рельсовых миграций) ex. " 20190527141340 "
Time.now.utc.to_formatted_s(:number) # using Rails
Time.now.utc.strftime("%Y%m%d%H%M%S") # using Ruby
Ответ 8
time = Time.zone.now()
Он будет работать как
irb> Time.zone.now
=> 2017-12-02 12:06:41 UTC
Ответ 9
Правильный способ - сделать Time.now.getutc.to_i
, чтобы получить правильную метку времени, поскольку простое отображение целого числа не всегда должно быть таким же, как временная метка utc из-за различий в часовых поясах.