Python - преобразование строкового представления даты в ISO 8601
Вопрос
В Python, как я могу преобразовать строку, подобную следующему:
Чт, 16 декабря 2010 12:14:05 +0000
к формату ISO 8601, сохранив часовой пояс?
Обратите внимание, что ординальная дата является строкой, а вывод тоже должен быть строкой, а не datetime
или что-то вроде того.
У меня нет проблем с использованием библиотек третьих лиц.
Решение
С использованием DateUtil:
import dateutil.parser as parser
text = 'Thu, 16 Dec 2010 12:14:05 +0000'
date = parser.parse(text)
print(date.isoformat())
# 2010-12-16T12:14:05+00:00
Другие советы
Питон встроенный DateTime Пакет имеет встроенный метод для преобразования объекта DateTime в изоформу. Вот пример:
>>>from datetime import datetime
>>>date = datetime.strptime('Thu, 16 Dec 2010 12:14:05', '%a, %d %b %Y %H:%M:%S')
>>>date.isoformat()
вывод
'2010-12-16T12:14:05'
Я написал этот ответ в первую очередь для людей, которые работают в UTC и не должны беспокоиться о временных зонах. Вы можете снять последние 6 символов, чтобы получить эту строку.
Python 2 не имеет очень хорошей внутренней библиотечной поддержки для часовых поясов, для получения более подробной информации и решения, на которые вы можете ссылаться этот ответ на Stackoverflow, в котором упоминается использование сторонних библиотек, аналогичных принятым ответом.