ValueError解析时间字符串

时间:2017-01-21 18:23:44

标签: python datetime strftime

我已编写此代码以将异常时间转换为EPOCH:

x = 'Mon Jul 25 19:04:30 GMT+01:00 2016'
print(datetime.strptime(x, '%a %b %d %H:%M:%S %Z%z %Y').strftime('%s'))

但是,它会返回错误ValueError: time data 'Mon Jul 25 19:04:30 GMT+01:00 2016' does not match format '%a %b %d %H:%M:%S %Z%z %Y'

问题与时区有关。我做错了什么?

2 个答案:

答案 0 :(得分:3)

您的时区格式中有一个额外的:会导致格式不匹配错误,您可以先从字符串中删除最后一个:,然后再解析它:

import re
from datetime import datetime
x1 = re.sub(r":(?=[^:]+$)", "", x)   # remove the last semi colon

datetime.strptime(x1, '%a %b %d %H:%M:%S %Z%z %Y').strftime('%s')
# '1469487870'

答案 1 :(得分:2)

如果使用dateutil而不是datetime.strptime,它似乎可以工作:

from dateutil import parser
parser.parse("Mon Jul 25 19:04:30 GMT+01:00 2016")
>> datetime.datetime(2016, 7, 25, 19, 4, 30, tzinfo=tzoffset(None, -3600))