如何用Python解析Microsoft JSON日期?
我必须读取一个JSON文件,它的日期字段格式如下如何用Python解析Microsoft JSON日期?,python,json,Python,Json,我必须读取一个JSON文件,它的日期字段格式如下 “MyDate”:“/Date(1603284014088)/” 我找到了一些用其他语言(JavaScript、Kotlin)解析它的示例,但在Python中没有 我可以在SCOTT HANSELMAN的这篇文章中发现,它们是Unix时代开始以来的毫秒,有时带有时区。所以我可以写一个简单的函数来解码它 import re from datetime import datetime, timedelta def decode_date (enco
“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中立即解析它?鉴于您已经能够使用正则表达式提取日期,请尝试以下代码进行转换:
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))
你不会告诉创建该服务的人eve ASP.NET Web API使用ISO8601作为日期。几乎10年内没有人使用这个Unix时间戳。您可以使用
datetime.fromtimestamp
直接转换Unix时间戳值,无需这样做yourself@PanagiotisKanavos自从大纪元被返回以来,我可以忍受毫秒。真正不需要的是它周围的/Date(…)
包装。我编辑代码是为了处理不匹配的字符串。。我完全同意Panagiotis Kanavos的观点,但这是一个已经结束的项目,我现在可以请那个人更改它。你好,你有时间查看我的回复吗?如果它对你有用,请考虑它的投票和/或选择它作为最终答案。谢谢你的时间!不需要调用float
。除以浮点将产生浮点结果。在Python3中,/
总是会产生一个浮点,即使两个参数都是int
s,所以s/1000
就足够了。@chepners
是一个字符串,所以你需要调用float
。哦,对不起,我走在前面了。我假设s
已经是int
。但也就是说,int(s)/1000
就足够了,而且“更严格”,因为人们期望s
是int
的字符串表示形式。