pymongo 怎么插入北京时间的字符串?

作者站长头像
站长
· 阅读数 6

我现在有北京时间的字符串

2023-12-25 10:31:32

通过datetime.datetime.strptime(2023-12-25 10:31:32, "%Y-%m-%d %H:%M:%S")转换,pymongo插入到mongodb。mongodb默认插入的是utc时间的,怎么才能插入是北京时间的?

回复
1个回答
avatar
test
2024-06-20

参考官方文档:https://pymongo.readthedocs.io/en/stable/examples/datetimes.htmlMongoDB会把日期和时间都转换为utc,你可以不转换为datetime类型,直接把时间当作一个字符串保存,或者按照官方文档,保存的时候指定时区,读取的时候传入时区自动转换:

import pytz

# 插入数据时指定时区
pacific = pytz.timezone("Asia/Shanghai")
aware_datetime = pacific.localize(datetime.datetime(2002, 10, 27, 6, 0, 0))
result = db.times.insert_one({"date": aware_datetime})
db.times.find_one()["date"]
from bson.codec_options import CodecOptions

# codec_options 指定时区查询时自动转换时区
aware_times = db.times.with_options(codec_options=CodecOptions(
    tz_aware=True,
    tzinfo=pytz.timezone('Asia/Shanghai')))
result = aware_times.find_one()
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容