参考官方文档:"https://pymongo.readthedocs.io/en/stable/examples/datetimes.html" (https://link.segmentfault.com/?enc=6YcRCPz7AlLqacHdU%2Byu2Q%3D%3D.%2FbkMjZXNpOr8y7%2FNF8lPEEDfAPbCFHJbViba2Se85lIPI0L5wNPARSm7dbytIPzsFKZbDlNWKsgop3d%2FK2k%2B4Fi4V1ClWEoEgMXIFzHTwZk%3D)
MongoDB会把日期和时间都转换为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()