isoparse
de la fonction python-dateutil
Le site python-dateutil Le paquet a dateutil.parser.isoparse
pour analyser non seulement les chaînes de date RFC 3339, comme celle de la question, mais aussi d'autres chaînes de date RFC 3339. ISO 8601 les chaînes de date et d'heure qui ne sont pas conformes à la RFC 3339 (comme celles qui n'ont pas de décalage UTC ou celles qui ne représentent qu'une date).
>>> import dateutil.parser
>>> dateutil.parser.isoparse('2008-09-03T20:56:35.450686Z') # RFC 3339 format
datetime.datetime(2008, 9, 3, 20, 56, 35, 450686, tzinfo=tzutc())
>>> dateutil.parser.isoparse('2008-09-03T20:56:35.450686') # ISO 8601 extended format
datetime.datetime(2008, 9, 3, 20, 56, 35, 450686)
>>> dateutil.parser.isoparse('20080903T205635.450686') # ISO 8601 basic format
datetime.datetime(2008, 9, 3, 20, 56, 35, 450686)
>>> dateutil.parser.isoparse('20080903') # ISO 8601 basic format, date only
datetime.datetime(2008, 9, 3, 0, 0)
Le site python-dateutil Le paquet a également dateutil.parser.parse
. Par rapport à isoparse
il est vraisemblablement moins strict, mais les deux sont assez indulgents et tenteront d'interpréter la chaîne de caractères que vous passez. Si vous voulez éliminer toute possibilité de lecture erronée, vous devez utiliser quelque chose de plus strict que l'une ou l'autre de ces fonctions.
dateutil.parser.isoparse
est un analyseur complet du format ISO-8601, mais fromisoformat
est délibérément no . Veuillez consulter la documentation de cette dernière fonction pour cette mise en garde (voir cette réponse ).
7 votes
Bogue Python : issue15873 : datetime : ajouter la possibilité d'analyser les dates et heures RFC 3339
1 votes
Liés : Convertir des timestamps avec un décalage en datetime obj en utilisant strptime
8 votes
Pour être clair : ISO 8601 est la norme principale. RFC 3339 est un "profil" autoproclamé de l'ISO 8601 qui fait quelques des dérogations peu judicieuses des règles de la norme ISO 8601.
6 votes
Ne manquez pas la solution python3.7+ ci-dessous pour inverser isoformat()
2 votes
Cette question ne doit pas être fermée car elle fait double emploi avec le message lié. Puisque celle-ci demande à analyser une chaîne de temps ISO 8601 (qui n'était pas supportée nativement par python avant la version 3.7) et l'autre est de format un objet datetime en une chaîne d'époque en utilisant une méthode obsolète.