Неправильная дата UTC в MongoDB Compass - PullRequest
0 голосов
/ 29 июня 2018

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

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

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

1 Ответ

0 голосов
/ 29 июня 2018

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

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

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

...