-
mongodb的日期時間格式是UTC時間,中國時間 = UTC時間 +8
-
可在pymongo客戶端加入時區以解決此問題:
import pytz from pymongo import MongoClient from datetime import datetime tzinfo = pytz.timezone('Asia/Shanghai') client = MongoClient( host="127.0.0.1", port=27017, username="root", password="123456", authSource="admin", # 在哪個數據庫進行身份驗證,默認是admin tz_aware=True, # 設置爲True tzinfo=tzinfo # 加入時區信息 ) db = client["test"] collection = db["mytest"] datetime.now() # 2020-04-11 10:42:42.452433 ret = collection.insert_one({ "name": "測試5", "create_time": tzinfo.localize(datetime.now()) }) # create_time不能使用datetime.now()獲取時間, # 應該使用 datetime.utcnow()或 tzinfo.localize(datetime.now())或 datetime.now(tz=tzinfo) # 這樣讀取數據時日期時間纔是標準的中國時間 res = collection.find_one({"name": "測試5"}) print(res) # {'_id': ObjectId('5e912ea261d252f76350728a'), 'name': '測試5', 'create_time': datetime.datetime(2020, 4, 11, 10, 42, 42, 452000, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>)} # 下面測試直接使用datetime.now()的情形 datetime.now() # 2020-04-11 10:49:41.899445 collection.insert_one({ "name": "測試6", "create_time": datetime.now() }) res = collection.find_one({"name": "測試6"}) # {'_id': ObjectId('5e913045143015041d776d08'), 'name': '測試6', 'create_time': datetime.datetime(2020, 4, 11, 18, 49, 41, 899000, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>)} # 可以看到時間+8小時
解決關於pymongo操作mongodb的時區問題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.