Сохранение дат в Монго через Compose.io против дат в Монго через Метеор

В Метеоре:

Events.insert({ 'start': new Date(2018, 9, 5, 7, 0, 0, 0) });

В Метеор Монго сохранена дата:

{ 
  "start" : ISODate("2018-10-05T11:00:00.000+0000"), // UTC time
}

Браузер будет отображать дату как 7 утра, как и ожидалось (EDT).

ОДНАКО, в Compose.io та же самая вставка Монго сохранит дату:

{ 
  "start" : ISODate("2018-10-05T07:00:00.000+0000"), // UTC time
}

Браузер будет отображать дату как 3 утра.

Mongodb Meteor, кажется, делает правильную вещь, компенсируя мой EDT и добавляя 4 часа. Композиция вставляет дату как есть.

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

1 ответ

Моим решением было использовать строку ISO 8601 без какого-либо смещения UTC вместо новой даты ().

Events.insert({ 'start': '2018-10-5T05:00:00);

Таким образом, Mongo не будет хранить его как дату ISO, а будет просто строкой, которая будет считываться браузером как точная дата, введенная пользователем. Браузер не смещает часовой пояс, и он просто вставляется в виде строки как есть.

Другие вопросы по тегам