У меня есть приложение, которое связывается с БД 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? Как это исправить?
да, ваш правильный. В pymongo я вставляю timestamp без использования tz_aware - я использую datetime.datetime.now() - это неверно. Я изменил это на datetime.datetime.utcnow(). С этим изменением я вижу правильное время в iOS. Да, смещение меня тоже смущает - я не вижу никакой конфигурации или где-либо еще, я могу это изменить! Я переместил сервер на UTC тоже - вместо EST –
на самом деле. Flask-PyMongo всегда использует объекты datetime, относящиеся к часовому поясу. То есть параметр tz_aware устанавливает значение True при создании соединения. Часовой пояс объектов datetime, возвращаемых из MongoDB, всегда будет UTC. Что меня немного смущает, почему datetime.datetime.now() не был преобразован в UTC –
решён. Robomongo - делал это! Это было преобразование дат, прежде чем показывать их мне. Дай это. –