Преобразование нечетной метки времени со смещением в UNIX time в Python [дубликат]
На этот вопрос уже есть ответ здесь:
У меня есть строка метки времени из веб-журнала, которая выглядит следующим образом:
10 / Jun/2005:05:59:05 -0500
Он хотел бы преобразовать его в метку времени UNIX.
A datetime
можно преобразовать с помощью time.mktime(datetime.timetuple())
В соответствии с datetime
документы, datetime.strptime()
следует преобразовать его в datetime:
from datetime import datetime
datetime.strptime("10/Jun/2005:05:59:05 -0500","%d/%b/%Y:%H:%M:%S %z")
По крайней мере, на Python 2.7.2 на моем Mac это приводит к
ValueError: 'z' - плохая директива в формате '%d/%b / %Y:%H:%M:%S %z '
Прочитав много вопросов на SO об этой ошибке, я решил попробовать python-dateutil
:
from dateutil import parser
parser.parse("10/Jun/2005:05:59:05 -0500")
Это тоже не сработало:
ValueError: неизвестный формат строки
Что теперь?
1 ответ:
Вы можете использовать
dateutils
чтобы провести беседу, вам потребуется два шага:>>> import calendar >>> from dateutil.parser import parse >>> d = parse('10/Jun/2005:05:59:05 -0500', fuzzy=True)
Это создаст объект datetime
>>> d datetime.datetime(2005, 6, 10, 5, 59, 5, tzinfo=tzoffset(None, -18000))
И преобразовать его в метку времени UNIX:
>>> ts = calendar.timegm(d.utctimetuple()) >>> print ts 1118401145