Maîtriser strptime() en Python pour un parsing de dates précis
Python strptime() : Conversion de chaînes en objets datetime
Ce guide montre comment créer des objets datetime à partir de chaînes en utilisant la méthode datetime.strptime() de Python, avec des exemples pratiques et une référence complète des codes de format.
Vidéo : Dates et heures en Python
Regardez le tutoriel officiel Python pour approfondir votre compréhension de la gestion des datetime.
La méthode strptime() crée un objet datetime à partir d'une chaîne qui suit un format spécifié.
Note : Toutes les chaînes ne peuvent pas être analysées ; l'entrée doit correspondre exactement au code de format.
Exemple 1 : Conversion d'une chaîne de date simple
from datetime import datetime
date_string = "21 June, 2018"
print("date_string =", date_string)
print("type of date_string =", type(date_string))
date_object = datetime.strptime(date_string, "%d %B, %Y")
print("date_object =", date_object)
print("type of date_object =", type(date_object))
Lorsque vous exécutez le programme, la sortie sera :
date_string = 21 June, 2018 type of date_string =date_object = 2018-06-21 00:00:00 type of date_object =
Comment fonctionne strptime()
La méthode de classe strptime() accepte deux arguments :
- La chaîne à analyser.
- Le code de format qui décrit la structure de la chaîne.
En fonction de ces entrées, la méthode renvoie un objet datetime qui représente le même moment dans le temps.
Dans l'exemple ci-dessus, le code de format %d %B, %Y signifie :
%d– jour du mois avec zéro initial (01‑31).%B– nom complet du mois (janvier‑décembre).%Y– année sur quatre chiffres.
Exemple 2 : Analyse de dates ambiguës
from datetime import datetime
dt_string = "12/11/2018 09:15:32"
# En supposant le format jour/mois/année
dt_object1 = datetime.strptime(dt_string, "%d/%m/%Y %H:%M:%S")
print("dt_object1 =", dt_object1)
# En supposant le format mois/jour/année
dt_object2 = datetime.strptime(dt_string, "%m/%d/%Y %H:%M:%S")
print("dt_object2 =", dt_object2)
Le programme produit :
dt_object1 = 2018-11-12 09:15:32 dt_object2 = 2018-12-11 09:15:32
Liste complète des codes de format
Le tableau ci-dessous résume toutes les directives utilisables avec strptime(). Pour la documentation complète, consultez le guide officiel du module datetime de Python.
| Directive | Signification | Exemple |
|---|---|---|
%a | Nom abrégé du jour de la semaine. | Dim, Lun, ... |
%A | Nom complet du jour de la semaine. | Dimanche, Lundi, ... |
%w | Jour de la semaine en nombre décimal. | 0, 1, ..., 6 |
%d | Jour du mois (zéro initial). | 01, 02, ..., 31 |
%-d | Jour du mois (sans remplissage). | 1, 2, ..., 30 |
%b | Nom abrégé du mois. | Jan, Fév, ..., Déc |
%B | Nom complet du mois. | Janvier, Février, ... |
%m | Numéro du mois (zéro initial). | 01, 02, ..., 12 |
%-m | Numéro du mois (sans remplissage). | 1, 2, ..., 12 |
%y | Année sans siècle (zéro initial). | 00, 01, ..., 99 |
%-y | Année sans siècle (sans remplissage). | 0, 1, ..., 99 |
%Y | Année avec siècle. | 2013, 2019, ... |
%H | Heure (horloge 24h, zéro initial). | 00, 01, ..., 23 |
%-H | Heure (horloge 24h, sans remplissage). | 0, 1, ..., 23 |
%I | Heure (horloge 12h, zéro initial). | 01, 02, ..., 12 |
%-I | Heure (horloge 12h, sans remplissage). | 1, 2, ..., 12 |
%p | AM ou PM selon la locale. | AM, PM |
%M | Minute (zéro initial). | 00, 01, ..., 59 |
%-M | Minute (sans remplissage). | 0, 1, ..., 59 |
%S | Seconde (zéro initial). | 00, 01, ..., 59 |
%-S | Seconde (sans remplissage). | 0, 1, ..., 59 |
%f | Microseconde (zéro initial). | 000000 – 999999 |
%z | Décalage UTC (+HHMM ou –HHMM). | |
%Z | Nom du fuseau horaire. | |
%j | Jour de l'année (zéro initial). | 001, 002, ..., 366 |
%-j | Jour de l'année (sans remplissage). | 1, 2, ..., 366 |
%U | Numéro de semaine (dimanche premier). | 00, 01, ..., 53 |
%W | Numéro de semaine (lundi premier). | 00, 01, ..., 53 |
%c | Date et heure locales. | Lun 30 Sep 07:06:05 2013 |
%x | Date locale. | 09/30/13 |
%X | Heure locale. | 07:06:05 |
%% | Un signe de pourcentage littéral. | % |
Erreur courante : ValueError
Si la chaîne et le code de format ne correspondent pas, strptime() lève une ValueError. Par exemple :
from datetime import datetime
date_string = "12/11/2018"
# Format incorrect – attend jour mois année
date_object = datetime.strptime(date_string, "%d %m %Y")
print("date_object =", date_object)
L'exécution de ce code produit :
ValueError: time data '12/11/2018' does not match format '%d %m %Y'
Lecture recommandée : Python strftime()
Python
- Mots-clés et identifiants Python : Maîtriser les mots réservés et les conventions de nommage
- Maîtriser les types de données Python : Guide pratique
- Maîtriser les opérateurs Python : Guide complet
- Maîtriser les arguments de fonctions Python : Positionnels, nommés et paramètres par défaut
- Maîtriser les dictionnaires Python : création, manipulation et techniques avancées
- Maîtriser les itérateurs Python : fonctionnement et création des vôtres
- Les fermetures Python expliquées : comment les fonctions imbriquées capturent les variables
- Expressions régulières Python (module re) — Guide pratique
- Maîtriser Python datetime : guide pratique pour les dates, heures et fuseaux horaires