Преобразование из эпохи в дату и время неверно - PullRequest
0 голосов
/ 08 февраля 2019

Я использовал этот ответ , чтобы преобразовать время эпохи в DateTime.У меня есть номер этой эпохи:

epoch = 1549626705942

и я делаю:

Time.at(epoch).to_datetime

Однако в результате я получаю это:

#<DateTime: 51075-09-19T08:45:42+02:00 ((20376082j,24342s,0n),+7200s,2299161j)>

Я использую Rubyверсия 2.5.3p105 и мои часы установлены на текущий год.Это значение эпохи соответствует сегодняшней дате (2 февраля 2019 г.), но я получаю год 51075. Действительно не уверен, что происходит.

Это также странно, потому что, когда я вношу свою метку времени на сайт, подобный этот Я получаю сегодняшнюю дату, но здесь Я получаю тот же результат, что и мой код Ruby.

Редактировать: я пытался удалить последние 3 числа этой даты и получил правильныйДата.Так что, так сказать, существует два «формата» эпохи?

1 Ответ

0 голосов
/ 08 февраля 2019

Вы передаете миллисекунды методу Time::at().Вы должны провести там секунды.Ссылка на документы: здесь .

Чтобы получить значение эпохи (в секундах), используйте Time#to_i

UPD

Это будет работать для вас:

Time.at(0, your_epoch_milliseconds, :millisecond)
...