【问题标题】:How to get isodate string from bson date/time object or timestamp with python?如何使用 python 从 bson 日期/时间对象或时间戳获取 isodate 字符串?
【发布时间】:2015-01-14 02:26:50
【问题描述】:

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

有没有办法将日期/时间转换为 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

【问题讨论】:

    标签: python mongodb pymongo


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我自己在使用 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-25
        • 2022-01-03
        • 1970-01-01
        • 1970-01-01
        • 2016-07-24
        • 1970-01-01
        相关资源
        最近更新 更多