我有带有表示日期和时间的字符串的 JSON 响应对象:
"event":{
"type":"Type",
"date-time":"\/Date(928142400000+0200)\/",
},
我不知道:
- 那是什么格式
- 我如何在 python 应用程序中解析它
- 如何将python日期转换为这种格式
有什么建议么?
我有带有表示日期和时间的字符串的 JSON 响应对象:
"event":{
"type":"Type",
"date-time":"\/Date(928142400000+0200)\/",
},
我不知道:
有什么建议么?
928142400000
是自 UNIX 纪元以来的时间,以毫秒为单位,+0200
是时区。
使用dateutil
库或datetime.timezone()
对象,您可以对时区偏移进行建模,时间戳本身可以用 解析datetime.datetime.fromtimestamp()
,前提是您将该值除以 1000.0:
import datetime
import re
timestamp_parse = re.compile(r'Date\((\d+)([+-]\d{4})\)')
timestamp, offset = timestamp_parse.search(datetime_value).groups()
tzoffset = datetime.timedelta(hours=int(offset[1:3]), minutes=int(offset[3:]))
if offset[0] == '-':
tzoffset *= -1
tzoffset = datetime.timezone(tzoffset)
dt = datetime.datetime.fromtimestamp(int(timestamp) / 1000.0).replace(tzinfo=tzoffset)
import datetime
import re
import dateutil.tz
timestamp_parse = re.compile(r'Date\((\d+)([+-]\d{4})\)')
timestamp, offset = timestamp_parse.search(datetime_value).groups()
tzoffset = int(offset[1:3]) * 3600 + int(offset[3:]) * 60
if offset[0] == '-':
tzoffset *= -1
tzoffset = dateutil.tz.tzoffset(None, tzoffset)
dt = datetime.datetime.fromtimestamp(int(timestamp) / 1000.0).replace(tzinfo=tzoffset)
演示:
>>> import datetime
>>> import re
>>> datetime_value = "/Date(928142400000+0200)/"
>>> timestamp_parse = re.compile(r'Date\((\d+)([+-]\d{4})\)')
>>> timestamp, offset = timestamp_parse.search(datetime_value).groups()
>>> tzoffset = datetime.timedelta(hours=int(offset[1:3]), minutes=int(offset[3:]))
>>> if offset[0] == '-':
... tzoffset *= -1
...
>>> tzoffset = datetime.timezone(tzoffset)
>>> datetime.datetime.fromtimestamp(int(timestamp) / 1000.0).replace(tzinfo=tzoffset)
datetime.datetime(1999, 5, 31, 10, 20, tzinfo=datetime.timezone(datetime.timedelta(0, 7200)))