我在一个使用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
有什么方法可以做到这一点吗?
我试了一下,得到的答案是:你的时间戳是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。