2013-12-13 5 views
1

У меня есть приложение, которое связывается с БД MongoDB через флягу API REST API. Я вижу, что показания времени в приложении составляют 5 часов, что заставляет меня думать о часовом поясе.MongoDB Pymongo Ubuntu - вопросы времени

Ubuntu показывает мне правильное время - его формат в соответствии с EST. Хотя, MongoDB - который, как я думаю, не знает о часовом поясе, показывает неправильное местное время (даже в UTC). При запуске db.serverStatus() я получаю ответ обратно, говоря:

"localTime" : ISODate("2013-12-13T21:15:16.663+19:00"), 

Сво около 9:15 вечера здесь на 12/12. Так UTC, должно быть около 2:15 утра. Я ожидал увидеть:

ISODate ("2013-12-13T02: 15: 16.663 + 05: 00").

Является ли мое предположение правильным для ожидаемого объекта ISODate? Как это исправить?

ответ

0

Кажется, оболочка MongoDB правильно сообщает даты.

ISODate("2013-12-13T21:15:16.663+19:00") 

Вы сказали, что около 2:15 утра, 13 декабря в вашем регионе, в UTC. Это 21:15 на смещение +19 часов, что и показывает MongoDB. Я не уверен, почему он отображает дату с этим смещением?!?

Поскольку вы являетесь водителем pymongo, ознакомьтесь с опцией классов подключения к базе данных tz_aware. Значение по умолчанию - False, что означает, что вы получаете наивные даты в своем приложении. Установите значение True, чтобы узнать даты, относящиеся к часовому поясу.

+0

да, ваш правильный. В pymongo я вставляю timestamp без использования tz_aware - я использую datetime.datetime.now() - это неверно. Я изменил это на datetime.datetime.utcnow(). С этим изменением я вижу правильное время в iOS. Да, смещение меня тоже смущает - я не вижу никакой конфигурации или где-либо еще, я могу это изменить! Я переместил сервер на UTC тоже - вместо EST –

+0

на самом деле. Flask-PyMongo всегда использует объекты datetime, относящиеся к часовому поясу. То есть параметр tz_aware устанавливает значение True при создании соединения. Часовой пояс объектов datetime, возвращаемых из MongoDB, всегда будет UTC. Что меня немного смущает, почему datetime.datetime.now() не был преобразован в UTC –

+0

решён. Robomongo - делал это! Это было преобразование дат, прежде чем показывать их мне. Дай это. –

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