Подтвердить что ты не робот

Конвертировать секунды с эпохи в joda DateTime в Scala

Я пытаюсь сделать секунды с эпохи и превратить их в объект DateTime в Scala. Я использую joda. К сожалению, пользуюсь ли я секундами или миллисекундами, я получаю странные результаты. Что я здесь делаю неправильно?

scala> new org.joda.time.DateTime(1378607203*1000)
res2: org.joda.time.DateTime = 1969-12-31T02:31:40.984Z

scala> new org.joda.time.DateTime(1378607203)
res3: org.joda.time.DateTime = 1970-01-16T22:56:47.203Z
4b9b3361

Ответ 1

Проверьте быстрый сеанс REPL:

scala> 1378607203 * 1000
res6: Int = -77299016

Нечетный, не так ли?:) Можете ли вы догадаться, почему это происходит?

Я дам вам подсказку, извлеченную из конструктора DateTime, который вы пытаетесь использовать.

DateTime(long instant)

По-прежнему не понимаешь? Попробуйте немного другую версию:

scala> 1378607203L * 1000
res8: Long = 1378607203000

Обратите внимание на L, обозначающий литерал типа Long. Вы просите 1 триллион! И Int только до двух миллиардов:

scala> Int.MaxValue
res7: Int = 2147483647

Таким образом, выполнение DateTime(1378607203L*1000) заставит его работать.