2

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

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

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
4

2 回答 2

3

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

于 2012-05-29T23:24:25.010 回答
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

于 2015-01-13T18:26:50.460 回答