Apple返回的收据过期日期格式很奇怪:
2018-06-18 15:03:55 Etc / GMT
from datetime import datetime
dt = datetime.strptime('2018-06-18 15:03:55 Etc/GMT', '%Y-%m-%d %H:%M:%S %Z')
Etc和GMT都相同。
我试图将其像这样转换为datetime对象,但是这样做失败。
ValueError: time data '2018-06-18 15:03:55 Etc/GMT' does not match format '%Y-%m-%d %H:%M:%S %Z'
为什么首先要定义两个时区?以及如何让Python理解它?
答案 0 :(得分:1)
实际上,Etc/GMT appears to be a valid, existing time zone只是日期时间似乎无法识别它。如果可以安装pytz,则可以执行以下操作:
from datetime import datetime
import pytz
dt, tz = '2018-06-18 15:03:55 Etc/GMT'.rsplit(maxsplit=1) # rsplit() for simplicity, obviously re would make this safer
dto = datetime.strptime(dt, '%Y-%m-%d %H:%M:%S').replace(tzinfo=pytz.timezone(tz))
print(dto) # result: 2018-06-18 15:03:55+00:00
答案 1 :(得分:0)
我不确定这是否正确,但是是否有帮助。
import re
from dateutil.parser import parse
s = '2018-06-18 15:03:55 Etc/GMT'
print( parse(re.sub("(?<=:\d{2}\s).*\/", r"", s)) )
输出:
2018-06-18 15:03:55+00:00
Etc/
dateutil
转换为日期时间对象。