python - 将奇怪的 Python 日期格式转换为可读日期

标签 python date

我正在使用 Python 访问某些 Web 服务的移动 API,响应包含以下奇怪的日期表示法:u'/Date(1409522400000+0200)/' 这应该是第一个2014 年 9 月。

我不确定这是哪种格式,但我想将其转换为可读的格式,即 datedatetime 或 Unix 时间。

谁能帮我解决这个问题?

最佳答案

时间字符串看起来像OData version 2 JSON verbose format for Datetime that may be seen in old ASP.NET or WCF applications :

“/Date(<ticks>[“+” | “-” <offset>])/”
<ticks> = number of milliseconds since midnight Jan 1, 1970
<offset> = utc offset

#!/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 is defined here .

关于python - 将奇怪的 Python 日期格式转换为可读日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28482616/

相关文章:

javascript - Date( 'YYYY-MM-DD' ) 构造一个比指定晚一天的日期 (Javascript)

python - BeautifulSoup "find"行为不一致 (bs4)

python - 在 BeautifulSoup 中查找特定属性

python - 值错误 : cannot set toolkit to wx because it has already been set to qt4

r - 按 R 中可用总数据的最后 12 个月过滤数据

php - 从日期 (varchar) 中提取信息并转化为输出

python - 是pythonic : naming lambdas

python - 带宽核密度 python

mysql - 更改mysql日期中的年份

java - java中时间戳字符串转时间戳