Comment convertir une chaîne en objet datetime ou time en Python



Dans l’univers de la programmation Python, il est fréquemment indispensable de convertir une suite de caractères, représentant une date ou une heure, en un objet datetime ou time. Cette opération de transformation est capitale pour la manipulation et la comparaison efficace de dates et d’heures. Cet article a pour objectif de vous guider pas à pas dans le processus de conversion de chaînes de caractères en objets datetime et time en Python, en explorant les différents formats de chaînes supportés et les diverses options de conversion disponibles.

Conversion d’une séquence de caractères en objet datetime

Un objet datetime symbolise une date et une heure précises. Pour transmuter une chaîne de caractères en un objet datetime, on a recours à la fonction strptime(), appartenant au module datetime. Cette fonction requiert deux arguments : la chaîne de caractères incarnant la date et l’heure, et une indication de format spécifiant la structure de cette chaîne.

Voici un exemple concret de conversion d’une chaîne de caractères structurée selon le format « AAAA-MM-JJ HH:MM:SS » en un objet datetime :


from datetime import datetime

chaine_date = "2023-03-08 14:30:00"
objet_date = datetime.strptime(chaine_date, "%Y-%m-%d %H:%M:%S")

print(objet_date)

Le résultat affiché sera : 2023-03-08 14:30:00

Transmutation d’une chaîne en objet time

Un objet time incarne une heure spécifique, sans référence à une date. Pour transformer une chaîne de caractères en un objet time, la fonction strptime() du module time est utilisée. Cette fonction prend également deux arguments : la chaîne de caractères représentant l’heure et une description du format de cette chaîne.

Voici un exemple de la conversion d’une chaîne de caractères au format « HH:MM:SS » en un objet time :


from time import strptime

chaine_heure = "14:30:00"
objet_heure = strptime(chaine_heure, "%H:%M:%S")

print(objet_heure)

L’affichage produit sera : time(14, 30, 0)

Options avancées pour la conversion de chaînes en datetime ou time

Les fonctions strptime() et strptime() mettent à disposition une variété d’options permettant de personnaliser la conversion de chaînes de caractères. Ces options comprennent notamment :

  • %a**, *%A : Abréviation ou nom complet du jour de la semaine
  • %b**, *%B : Abréviation ou nom complet du mois
  • %c : Représentation abrégée de la date et de l’heure
  • %d : Jour du mois (de 01 à 31)
  • %H : Heure (de 00 à 23)
  • %I : Heure (de 01 à 12)
  • %j : Jour de l’année (de 001 à 366)
  • %M : Minutes (de 00 à 59)
  • %p : Indicateur AM/PM
  • %S : Secondes (de 00 à 59)
  • %U : Numéro de semaine dans l’année (de 00 à 53)
  • %w : Numéro du jour de la semaine (de 0 à 6, lundi=0)
  • %W : Numéro de semaine dans l’année (de 00 à 53, lundi=0)
  • %x : Représentation abrégée de la date
  • %X : Représentation abrégée de l’heure
  • %y : Année (de 00 à 99)
  • %Y : Année (format AAAA)
  • %Z : Nom du fuseau horaire

Ces options permettent de définir avec précision le format attendu de la chaîne de caractères en entrée. Par exemple, le code ci-dessous utilise le format « %j/%m/%Y » pour effectuer la conversion d’une chaîne en objet datetime :


from datetime import datetime

chaine_date = "08/03/2023"
objet_date = datetime.strptime(chaine_date, "%d/%m/%Y")

print(objet_date)

Cela affichera : 2023-03-08 00:00:00

En guise de conclusion

La transformation de chaînes de caractères en objets datetime et time en Python est une étape fondamentale pour manipuler et comparer des dates et des heures. En tirant parti des fonctions strptime() et des options de formatage disponibles, vous pouvez convertir des chaînes de caractères en objets datetime ou time dans une variété de formats, assurant une gestion rigoureuse et fiable des données temporelles dans vos projets Python.

Questions fréquemment posées

1. Quelle est la distinction entre les objets datetime et time ?

Les objets datetime représentent une date et une heure précises, tandis que les objets time se limitent à la représentation d’une heure, sans référence à une date.

2. Est-il possible de convertir une chaîne en objet datetime ou time sans indiquer de format ?

Oui, il est possible d’utiliser les fonctions parse() ou fromisoformat() pour convertir une chaîne au format ISO 8601 en un objet datetime ou time.

3. Comment convertir un objet datetime ou time en chaîne de caractères ?

La fonction strftime() permet de convertir un objet datetime ou time en une chaîne de caractères formatée selon vos spécifications.

4. Comment comparer deux objets datetime ou time ?

Les opérateurs de comparaison (<, <=, ==, !=, >=, >) peuvent être utilisés pour comparer deux objets datetime ou time.

5. Comment ajouter ou soustraire une durée à un objet datetime ou time ?

Les méthodes timedelta() et time() permettent d’ajouter ou de soustraire une durée à un objet datetime ou time.

6. Comment récupérer le fuseau horaire actuel ?

La fonction timezone() permet d’obtenir le fuseau horaire actuel.

7. Comment convertir une chaîne en objet datetime ou time dans un fuseau horaire spécifique ?

En utilisant strptime() ou strptime() et en spécifiant l’argument tzinfo, vous pouvez transformer une chaîne en objet datetime ou time dans un fuseau horaire déterminé.

8. Comment gérer les chaînes de date et d’heure qui peuvent contenir des valeurs manquantes ?

Le module dateutil est un outil efficace pour gérer les chaînes de date et d’heure susceptibles de contenir des informations manquantes.

Mots-clés : Python, conversion, date, heure, objet datetime, objet time, strptime, strftime