2015-12-04 3 views
1

Я пишу в мою базу данных mongoDB, например startDate, startdate всегда в понедельник недели (я использую, и я нахожусь в среднеевропейском часовом поясе).MongoDB TimeZone

"startDate" : ISODate("2014-12-28T23:00:00Z"), 
"startDate" : ISODate("2015-03-29T22:00:00Z") 
"startDate" : ISODate("2015-04-05T22:00:00Z"), 
"startDate" : ISODate("2015-10-25T23:00:00Z") 

Я смущен, потому что иногда DateFormat является:

2014-12-28T23:00:00Z (sunday, 23h) 

и иногда:

2015-04-05T22:00:00Z (sunday, 22h) 

В ява коде дата понедельнику, 00h -> это нормально , Кто-нибудь знает, что происходит здесь, почему время для записей различно и как это предотвратить?

+0

Лучший тестовый пример DST, когда-либо ... отметьте даты .... – FaithReaper

ответ

5

летнее время

MongoDB хранит даты в UTC по умолчанию.

Как вы находитесь в среднеевропейском часовом поясе, это означает, что существует разница в один или два часа в зависимости от того, падает ли дата или за пределами периода Daylight Saving Time (DST). В 2015 году DST началась 29 марта и закончилась 25 октября. Поэтому на 28 декабря есть одночасовое смещение и 2-часовая коррекция на 5 апреля.

Если вы хотите предотвратить это, вы должны преобразовать локальные значения даты и времени в UTC, прежде чем сохранять их в MongoDB. Или, как указал Маркус Малберг, конвертировать в местное время после загрузки даты.

+1

Не удалось ли конвертировать в местное время после загрузки даты? –

+0

внесла свой комментарий, чтобы добавить комментарий. – Jaco

Смежные вопросы