2017-01-21 10 views
4

Я написал этот код, чтобы преобразовать необычное время в ЭПОХИ:ValueError разборе строки времени

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'

Проблема заключается в том, чтобы сделать что-то с часовым поясом. Что я сделал не так?

+1

UTC смещение должно быть в форме + HHMM или -HHMM, ваш + HH: MM. – DyZ

ответ

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' 
+0

Интересно, что это работает в Python3, но в Python2 это не выполняется: 'ValueError: 'z' является плохой директивой в формате '% a% b% d% H:% M:% S% Z% z% Y' ' – schwobaseggl

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)) 
+0

Ты прав. Благодаря! –

 Смежные вопросы

  • Нет связанных вопросов^_^