首页 > 解决方案 > 如何在 Python 中解析 Microsoft JSON 日期?

问题描述

我必须读取一个 JSON 文件,它的日期字段格式如下

"MyDate": "/Date(1603284014088)/",

我找到了一些用其他语言(JavaScript、Kotlin)解析它的例子,但在 Python 中没有。

我可以在此 SCOTT HANSELMAN 的帖子中找到它们是自 Unix 纪元开始以来的毫秒数,有时带有时区。所以我可以写一个简单的函数来解码它。

import re
from datetime import datetime, timedelta

def decode_date (encoded_date):
    mask = "\/Date\(([0-9]*)\)"
    offset = datetime(1970, 1, 1)
    my_matchs = re.match(mask, encoded_date).groups()
    if len(my_matchs) == 1:
        return datetime(1970, 1, 1) + timedelta(milliseconds=int(my_matchs[0]))
    else:
        return None
    

encoded = "/Date(1603284014088)/"
print (decode_date(encoded))

这个函数不能用时区解析日期,因为我很懒:),我的问题是 - 是否有一些库可以在 Python 中开箱即用地解析它?

标签: pythonjson

解决方案


鉴于您已经能够使用 RegEx 提取日期,请尝试以下代码进行转换:

import datetime

s = '1603284014088'
fmt = "%Y-%m-%d %H:%M:%S"

# Local time
t = datetime.datetime.fromtimestamp(float(s)/1000.)
print (t.strftime(fmt))

# UTC time
t_utc = datetime.datetime.utcfromtimestamp(float(s)/1000.)
print (t_utc.strftime(fmt))

推荐阅读