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

Хранить дату в MongoDB без учета часового пояса

Каков наилучший способ хранения даты в MongoDB без учета часового пояса?

Я пытаюсь объяснить проблему с помощью примера:

Джузеппе в Италии создал счет на дату "December 15, 2014", когда система сохранит эту дату, в MongoDB будет сохранен "2014-12-14T23:00:00.000Z".

Джон в Великобритании читает счет-фактуру и видит "December 14, 2014" как дату счета.

Очевидно, что эта информация неверна, так как Jhon должен видеть "December 15, 2014" как дату счета, как я могу решить эту проблему?

4b9b3361

Ответ 1

Целые даты не должны размещаться в объекте Date. Несмотря на название, Date обозначает дату и время. Если значение, с которым вы работаете, представляет собой целую дату, а не определенное время в эту дату, тогда вы должны сохранить значение в другом формате.

Параметры:

  • Строка в формате YYYY-MM-DD или YYYYMMDD
  • Целое число целых дней с некоторой опорной точки.

Ответ 2

Это означает, что вы сделали это неправильно. Хорошая практика базы данных уже давно хранит даты в формате UTC или Zulu. Итак, что вы должны были сделать (по крайней мере, в нотации JavaScript):

var  myDate = new Date ("2014-12-15");

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

JavaScript имеет смешные способы интерпретации даты "строка". Так, например:

var  myDate = new Date ("2014/12/15");

Фактически предоставляет объект даты в вашем "локальном" часовом поясе для вашего приложения. Наверное, не то, что вы действительно хотите в большинстве случаев.

Лучшая практика. Не могу этого подчеркнуть. "Универсальная постоянная времени" - это только способ хранения данных даты. В противном случае вы делаете это неправильно.