Неправильная дата UTC в MongoDB Compass

1

Я упаковываю свое приложение на python (flask) с помощью docker. В моем приложении я генерируя дату UTC с datetime и datetime.utcnow() datetime библиотеки с использованием datetime.utcnow().

К сожалению, когда я проверяю сохраненные данные с помощью MongoDB Compass дата в формате UTC смещается на два часа (на мой локальный часовой пояс). Все мои док-контейнеры имеют часовой пояс Etc/UTC. Более того, соединение mongoengine с MongoDB использует tz_aware=False и tzinfo=None, что предотвращает преобразование дат на лету.

Откуда берется смещение и как его исправить?

Теги:
docker
mongoengine

1 ответ

5

Наконец, пытаясь доказать свою неправоту и голова, я нашел причину и решение проблемы.

Мы живем в мире иллюзий, и то, что вы видите, не то, что вы получаете! , Я решил проверить мои данные поверх mongo shell а не MongoDB Compass GUI. Я выясню, что данные, поступившие в базу данных, содержат правильную дату UTC. Это сузило все мое предыдущее предположение о том, что в моем приложении python должно быть что-то неправильное, а также среда, в которой работает приложение. Что осталось от MongoDB Compass. После изменения часового пояса на моей машине в случайном часовом поясе и обновления коллекции в MongoDB Compass отображаемая дата UTC изменилась на дату, которая соответствует случайному часовому поясу.

Имейте в MongoDB Copass что MongoDB Copass отображает все, что сохраняется в поле " Date базы данных", увеличенное вокруг вашего часового пояса. Например, если вы сохранили время UTC, эквивалентное 8:00 am, а ваш часовой пояс вашего компьютера - Европа/Варшава, тогда MongoDB Compass отобразит 10:00am.

  • 8
    Btw. То, как MongoDB Copass отображает дату, - действительно плохое программное решение!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню