/ / Як зрозуміти BSONDateTime в MongoDB? (Scala) - mongodb, scala, datetime, bson, reactivemongo

Як зрозуміти BSONDateTime в MongoDB? (Scala) - mongodb, scala, datetime, bson, reactivemongo

BSONDateTime у MongoDB - це просто довге число, яке виглядає приблизно так:

BSONDateTime(1403950332121)

Як я можу це використати або перекласти його в читаний час?

Відповіді:

3 для відповіді № 1

Я вважаю, що це епізодичні секунди як мілісекунди. Це кількість секунд з першої секунди 1 січня 1970 р. Отже, це кількість мілісекунд з 1 січня 1970 р. Вона заснована на UTC, зберігається як 64-бітове ціле число.

Ви можете використовувати команду дати Linux - Мій часовий пояс MST -7.

$ date --date "@1403950332"
Sat, Jun 28, 2014  4:12:12 AM

Я видалив останні три цифри (мілісекунди).


1 для відповіді № 2

Ось суть неявних перетворювачів, які я вважаю корисними: https://gist.github.com/ctcarrier/9918087

Це працює для мене. Можливо, вам потрібна одна незначна зміна: замість встановлення глобальної DateTimeZone.default, додайте аргумент до конструктора DateTime:

implicit object BSONDateTimeHandler extends BSONHandler[BSONDateTime, DateTime] {
def read(time: BSONDateTime) = new DateTime(time.value, DateTimeZone.UTC)
def write(jdtime: DateTime) = BSONDateTime(jdtime.getMillis)
}