Python: конвертировать формат времени в unix_timeformat
У меня есть такой формат времени
t = "2012-03-20T08:31:00-05:00"
Я могу извлечь содержимое времени, используя RegEx, как это.
p = re.compile("(\d{4})\-(\d\d)\-(\d\d)T(\d\d):(\d\d):(\d\d)[\-|+]\d\d:\d\d")
matches = p.findall(t)
Но мне было интересно, есть ли способ конвертировать этот формат напрямую в unix_timestamp без использования RegEx? Есть ли библиотека календарей или что-то подобное?
3 ответа
Решение
Использование time.strptime
:
time.strptime(t, "%Y-%m-%dT%H:%M:%S-%Z")
К сожалению, это не работает с числовыми смещениями часовых поясов. http://labix.org/python-dateutil должен уметь обрабатывать ваш формат:
dateutil.parser.parse(t)
В качестве альтернативы, вы можете разбить вашу строку до числового смещения:
t, offset_sign, offset = t[:-6], t[-6], t[-5:]
t = time.strptime(t, "%Y-%m-%dT%H:%M:%S")
offset = time.strptime(offset, "%H:%M")
datetime.datetime.strptime
твой друг:)