Python – Converter a representação de string de data para ISO 8601

Em Python, como posso converter uma string assim:

Qui, 16 de Dezembro de 2010 12:14:05 +0000

para o formato ISO 8601, mantendo o fuso horário?

Por favor, note que a data original é string, e a saída deve ser string, não datetime ou algo assim.

Eu não tenho nenhum problema para usar bibliotecas de terceiros, no entanto.

Usando 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 

O pacote datetime inbuilt do Python foi construído no método para converter um object datetime em isoformat. Aqui está um exemplo:

 >>>from datetime import datetime >>>date = datetime.strptime('Thu, 16 Dec 2010 12:14:05', '%a, %d %b %Y %H:%M:%S') >>>date.isoformat() 

saída é

 '2010-12-16T12:14:05' 

Escrevi essa resposta principalmente para pessoas que trabalham na UTC e não precisam se preocupar com fusos horários. Você pode retirar 6 últimos caracteres para obter essa seqüência.

O Python 2 não tem um suporte muito bom à biblioteca interna para fusos horários. Para obter mais detalhes e soluções, consulte esta resposta em stackoverflow, que menciona o uso de bibliotecas de terceiros semelhantes à resposta aceita.