Сохранение дат в Монго через 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, а будет просто строкой, которая будет считываться браузером как точная дата, введенная пользователем. Браузер не смещает часовой пояс, и он просто вставляется в виде строки как есть.