python - MongoDB Compass 中的 UTC 日期不正确
问题描述
我用 docker 打包我的 python ( flask
) 应用程序。在我的应用程序中,我使用datetime
库生成 UTC 日期datetime.utcnow()
。
不幸的是,当我检查保存的数据时MongoDB Compass
,UTC 日期偏移了两个小时(到我的本地时区)。我所有的 docker 容器都将时区设置为Etc/UTC
. Morover,mongoengine
与 MongoDB 的连接使用tz_aware=False
and tzinfo=None
,是什么阻止了实时日期转换。
偏移量来自哪里以及如何解决?
解决方案
最后,在试图证明自己错了,无毛头后,我找到了问题的原因和解决方案。
我们生活在虚幻的世界里,所见即所得!!!. 我决定通过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
。
推荐阅读
- mysql - MySQL 在整个约束中检查另一个表中的 ENUM 列
- python - TypeError:('关键字参数不理解:','dim_ordering')
- c# - 如何将列表项与图标对齐?
- javascript - 为什么我在闪烁的字符周围有边框?
- google-tag-manager - 我可以将 Google 跟踪代码管理器与新的 Google 协作平台一起使用吗?
- javascript - 为父元素触发“focusout”(或类似的)
- laravel-7 - 在多个项目之间共享单个 jwt 令牌以进行身份验证
- c# - WPF Grid Panel.ZIndex 设置为 1 在另一个窗口的情况下不起作用
- java - 尝试一些更改并回滚到以前的状态以防 Java 失败
- manim - ManimGL 错误...在 example_scenes 的 Graphscene 中未渲染轴