我正在使用Python访问某些Web服务的移动API,响应中包含以下奇怪的日期表示法:u'/Date(1409522400000+0200)/'
这应该是2014年9月1日。
我不确定这是哪种格式,但是我想将其转换为可读的格式,即adate
或adatetime
或Unix时间。
有人可以帮我吗?
时间字符串看起来像Datetime的OData版本2 JSON详细格式,可以在旧的ASP.NET或WCF应用程序中看到:
“ / Date(<ticks> [“ +” |“-” <offset>])/”
<ticks> =自1970年1月1日午夜以来的毫秒数
<offset> = utc偏移
#!/usr/bin/env python3
import re
from datetime import datetime, timedelta, timezone
time_string = u"/Date(1409522400000+0200)/"
epoch = datetime(1970, 1, 1, tzinfo=timezone.utc)
ticks, offset = re.match(r'/Date\((\d+)([+-]\d{4})?\)/$', time_string).groups()
utc_dt = epoch + timedelta(milliseconds=int(ticks))
print(utc_dt)
if offset:
offset = int(offset)
hours, minutes = divmod(abs(offset), 100)
if offset < 0:
hours, minutes = -hours, -minutes
dt = utc_dt.astimezone(timezone(timedelta(hours=hours, minutes=minutes)))
print(dt)
2014-08-31 22:00:00+00:00
2014-09-01 00:00:00+02:00
这里timezone
定义在哪里。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句