我现在有北京时间的字符串
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时间的,怎么才能插入是北京时间的?
我现在有北京时间的字符串
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时间的,怎么才能插入是北京时间的?
要在 MongoDB 中插入北京时间(或其他任何时区的时间),您需要将时间转换为 UTC,然后将其插入到 MongoDB 中。当您从 MongoDB 检索数据时,您可以将其转换回所需的时区。
在 Python 中使用 pymongo
和 datetime
,您可以按照以下步骤进行:
datetime.strptime
将字符串转换为 datetime 对象。pymongo
插入转换后的 datetime 对象。以下是一个示例代码:
from datetime import datetime
from pytz import timezone
from pymongo import MongoClient
# 创建 MongoDB 客户端和数据库连接
client = MongoClient('mongodb://localhost:27017/')
db = client['your_database_name']
collection = db['your_collection_name']
# 北京时间字符串
beijing_time_str = "2023-12-25 10:31:32"
# 将字符串转换为 datetime 对象
beijing_time = datetime.strptime(beijing_time_str, "%Y-%m-%d %H:%M:%S")
# 将 datetime 对象转换为 UTC
utc_time = beijing_time.astimezone(timezone('UTC'))
# 插入到 MongoDB
collection.insert_one({"time": utc_time})
这样,当您插入 datetime 对象时,它将是 UTC 时间,但它代表的实际时间是北京时间。当您从 MongoDB 中检索该时间时,您可能需要将其转换回北京时间。
注意:您还需要确保您的 MongoDB 服务器和客户端的时区设置是正确的,以确保时间转换的准确性。
4 回答2.3k 阅读
1 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读
1 回答1.3k 阅读
1 回答650 阅读
参考官方文档:https://pymongo.readthedocs.io/en/stable/examples/datetimes.html
MongoDB会把日期和时间都转换为utc,你可以不转换为datetime类型,直接把时间当作一个字符串保存,或者按照官方文档,保存的时候指定时区,读取的时候传入时区自动转换: