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 твой друг:)

http://docs.python.org/library/datetime.html

Используйте strptime из временного модуля

Другие вопросы по тегам