web-dev-qa-db-fra.com

Python - Convertit la représentation sous forme de chaîne de la date en ISO 8601

En Python, comment puis-je convertir une chaîne comme celle-ci:

Jeu.16 déc.2010 12:14:05 +0000

au format ISO 8601, tout en conservant le fuseau horaire?

Veuillez noter que la date d'origine est une chaîne et que la sortie doit également être une chaîne, pas datetime ou quelque chose du genre.

Cependant, je n'ai aucun problème à utiliser des bibliothèques tierces.

45
Alon Gubkin

En utilisant 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
77
unutbu

Python intégré datetime le package a une méthode intégrée pour convertir un objet datetime en isoformat. Voici un exemple:

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

la sortie est

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

J'ai écrit cette réponse principalement pour les personnes qui travaillent à l'UTC et n'ont pas à se soucier des fuseaux horaires. Vous pouvez supprimer les 6 derniers caractères pour obtenir cette chaîne.

Python 2 n'a pas un très bon support de bibliothèque interne pour les fuseaux horaires, pour plus de détails et de solution, vous pouvez vous référer à cette réponse sur stackoverflow, qui mentionne l'utilisation de bibliothèques tierces similaires à la réponse acceptée.

20
Sumit Kumar