pymongo在读写dataframe时自动的相差8个小时
-
dataframe数据集预览
-
查看一下数据的类型
可以看到,collect_time的数据类型是datetime64
-
写入mongodb
connections.insert(json.loads(data_final.T.to_json()).values())
-
查看数据库
通过对比我们发现,当将 datetime64的数据存入mongodb时,时间会自动的增加8小时 -
读取数据
可以看到,读出来之后所有的时间都少了8小时
总结:MongoDB存储时间类型数据时,都是先转换为UTC时间,然后存储到数据库中,如果将本地时间存入到MongoDB数据库时,将本地时间减去8小时(用到了datetime.timedelta模块),
import datetime即:datetime.datetime.now()-datetime.timedelta(hours=8), 相反, 获取MongoDB数据库存入的时间数据,需要加8小时
即:data[‘updata_time’]+datetime.timedelta(hours=8)
原因已找到:
pd.to_datetime()将时间戳转化为日期时是没有时区信息的,即pd.to_datetime()认为时间戳是UTC时间,故此操作中为了显示本地时间可以手动增加8小时
参考:
https://huangzhw.github.io/2017/10/22/mongodb-date/