如何从bson日期/时间对象获取isodate字符串或使用python获取时间戳?

时间:2012-05-29 22:10:18

标签: python mongodb pymongo

使用bson json_util将bson日期/时间对象转换为json时,datetime表示为自纪元以来的毫秒数。

有没有办法将日期/时间转换为isodate字符串?或者是在使用json_util转储json之前将datetime实例转换为字符串的更好方法吗?

raw cursor item: {u'_id': ObjectId('4fc51500381b472cfdfa4eaf'), u'ts': datetime.datetime(2012, 5, 29, 18, 27, 12, 221000)} 

json.dumps(obj,default = json_util.default)

json: {"_id": {"$oid": "4fc51500381b472cfdfa4eaf"},"ts": {"$date": 1338316032221}} 

当使用python datetime模块datetime.fromtimestamp(ts)时,我得到了ValueError,我做错了什么?:

import datetime
datetime.datetime.fromtimestamp(1338316032221)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: year is out of range

2 个答案:

答案 0 :(得分:3)

您为fromtimestamp方法提供了自纪元以来的时间(以毫秒为单位),但它预计自以来的时间以来的时间(请参阅datetime.datetime.fromtimestamptime.time文档): )

答案 1 :(得分:0)

我刚用Python和MongoDB存储遇到了这个问题。最简单的答案是:

import time
bson_timevalue = 1421147432935
readable_date = time.strftime("%Y-%m-%d", time.localtime(int(bson_timevalue / 1000)))

print readable_date

给你:2015-01-13