问题:

mongodb在存储时间类型的数据时,会自动将时区转换为格林尼治(标准)时间。
例如用北京时间存储进去,mongo会自动转为标准时间,从而会少8个小时。

北京时间:

datetime.datetime(2022, 8, 29, 18, 0, 0, 527000)

mongo中时间:

datetime.datetime(2022, 8, 29, 10, 0, 0, 527000)

解决方式:

因此在进行数据操作时,会出现时差的情况。针对这种情况有以下三种解决方法:

  1. 入参时手动减少8小时,出参后手动添加8小时。
  2. 将mongo中的时间设为时间戳或者字符串形式,这二者没有时区性质。
  3. 不同的编程语言或者框架会对mongo的输入和输出自动进行时区处理,这个要分情况查询相关文档。
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐