MongoDB罗盘中的UTC日期不正确

时间:2018-06-29 09:49:04

标签: python mongodb docker mongoengine mongodb-compass

我将python(flask)应用程序与docker打包在一起。在我的应用中,我正在使用datetimedatetime.utcnow()库生成UTC日期。

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

偏移量来自哪里以及如何解决?

1 个答案:

答案 0 :(得分:11)

最后,在尝试证明自己做错了事和无头的头脑之后,我找到了造成问题的原因和解决方案。

我们生活在幻想的世界中,并且所见即所得!! 。我决定通过mongo shell客户检查我的数据 而不是MongoDB Compass GUI。我发现到达数据库的数据包含正确的UTC日期。这缩小了我之前所有的范围 假设我的python应用程序和应用程序所处的环境必须有问题。剩下的是MongoDB Compass本身。 将计算机上的时区更改为随机时区并刷新MongoDB Compass中的集合后,显示的UTC日期更改为适合随机时区的日期。

请注意,MongoDB Copass会显示数据库Date字段中保存的内容,并会放大显示您机器的时区。例如,如果您保存的UTC时间等于8:00 am, 并且您机器的时区是欧洲/华沙,那么MongoDB Compass将显示10:00am