Почему существует разница во времени между сервером node.js и mongodb? - PullRequest
0 голосов
/ 30 октября 2018

В моей базе данных mongoDB у меня есть документ, атрибут которого 'dia' - это дата, заполненная:

ISODate ( "2018-09-07T20: 00: 00.000Z") "

Проблема возникла, когда я попытался получить этот документ на моем сервере node.js. В настоящее время я использую mongoose, и когда я делаю model.findById ('5b9d04c728c1640c07bb054f'), он возвращает объект в порядке, за исключением того факта, что атрибут dia имеет следующее значение:

'Пт. Сент. 07 2018 17:00:00 GMT-0300 (-03)'.

Кто-нибудь знает, почему существует разница между датой, сохраненной в моей базе данных, и датой, сделанной mongoose, когда я пытаюсь получить документ?

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Проблема в том, что моя база данных хранит каждый документ в GMT (время по Гринвичу), а мой сервер работает в моем местном часовом поясе, который GMT (-3). Чтобы использовать правильную дату для запроса mongoDB, я использовал moment.js со следующими параметрами:

var date = moment.utc(dia).format();

получение в качестве результата 'date = 2018-09-01T20: 00: 00Z', что соответствует времени в базе данных.

UTC (Всемирное координированное время) совпадает с GMT, но в настоящее время используется.

0 голосов
/ 30 октября 2018

Скорее всего, оно сохраняется как GMT и читается в часовом поясе GMT-3. Вполне возможно, что node.js предполагает, что он получает время по Гринвичу и форматирует его в соответствии с вашей локалью. Возможно, вы захотите либо прочитать дату в желаемой локали (вместо значения по умолчанию GMT), либо распечатать ее в локали GMT, что должно исправить разницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...