MongoDB Compass中的UTC日期不正确

Luk*_*ski 4 python mongodb mongoengine docker mongodb-compass

flask使用docker 打包我的python()应用程序.在我的应用程序中,我正在使用datetime库生成UTC日期datetime.utcnow().

不幸的是,当我检查保存的数据时MongoDB Compass,UTC日期偏移了两个小时(到我当地的时区).我的所有docker容器都设置了时区Etc/UTC.Morover,mongoengine与MongoDB的连接使用tz_aware=Falsetzinfo=None阻止飞行日期转换.

偏移来自何处以及如何解决?

Luk*_*ski 13

最后,在试图证明自己错了之后,无头的我找到了问题的原因和解决方案.

我们生活在一个幻想的世界你看到的是不是你得到了什么!.我决定通过mongo shell客户端检查我的数据而不是MongoDB Compass GUI.我发现到达数据库的数据包含正确的UTC日期.这缩小了我先前的假设,即我的python应用程序和应用程序所处的环境有问题.剩下的就是MongoDB Compass它自己.将我的机器上的时区更改为随机时区,并在其中刷新收集后MongoDB Compass,显示的UTC日期更改为适合随机时区的日期.

请注意,MongoDB Copass显示数据库Date字段中保存的内容,放大了机器的时区.例如,如果您保存相当于的UTC时间8:00 am,并且您的机器的时区是Europe/Warsaw,那么MongoDB Compass将显示10:00am.

  • 顺便说一句.MongoDB Copass显示日期的方式是非常糟糕的软件决策! (10认同)
  • 不幸的是,没有及时找到这个答案。花了几个小时将我的头撞在墙上,以弄清同一件事。设计此工具的人不应该再让其靠近键盘 (2认同)