Python MongoEngine解析从数据库返回的JSON-ified DateTimeField。

问题描述 投票:0回答:1

我在一个使用MongoEngine的模型类中定义了一个DateTimeField。

class A(Document):
    ...
    time_m = DateTimeField(default=datetime.utcnow)
    ...

当我进行一个查询,返回一个类型为A的JSON-ified文档时,我可以看到时间表示为:"1591608726198"。

{
  ...
  "time_m": {
              "$date": 1591608726198
            }
  ...
}

我想用Python把字符串 "1591608726198 "转换为人可读的字符串表示日期和时间,但是... 不使用任何MongoEngine相关的类 (更准确地说,我想把它转换成Jinja2模板)。

我尝试了以下方法。

  • datetime.datetime.utcfromtimestamp(int('1591608726198')) => ValueError: year 52406 is out of range
  • dateutil.parser.parse('1591608726198') => OverflowError: signed integer is greater than maximum

有什么方法可以做到这一点吗?

python mongodb mongoengine
1个回答
0
投票

我试了一下,得到的答案是:你的时间戳是13位数。

>>> from datetime import datetime
>>> ts = 1591608726198
>>> dt = datetime.fromtimestamp(ts/1000)
>>> print(dt.strftime("%Y-%m-%d %H:%M:%S"))
2020-06-08 15:02:06

你的时间戳是13位数(毫秒精确),要解析毫秒精确的时间戳,你必须除以1000。

© www.soinside.com 2019 - 2024. All rights reserved.