2022-12-20 06:32 Temps de lecture : 10 min

Comment convertir une chaîne en Datetime en Python

Transformation de Chaînes de Date et d'Heure en Objets Datetime en Python

La conversion d'un type de données vers un autre s'avère essentielle dans tout langage de programmation. La plupart des langages prennent en charge la conversion pour les types de données de base. Cependant, les types de données personnalisés, comme les informations de date et d'heure, peuvent nécessiter des modules spécifiques pour les conversions.

Les manipulations de dates et d'heures sont souvent complexes pour les développeurs. Heureusement, Python propose des modules intégrés pour simplifier ces opérations. Nous allons découvrir comment transformer une chaîne de caractères représentant une date et une heure en un objet datetime grâce à différents modules. Mais avant cela, voyons pourquoi cette conversion est si importante.

Pourquoi Convertir une Chaîne Datetime en Objet Datetime ?

Travailler avec des dates sous forme de chaînes de caractères peut s'avérer fastidieux. En les convertissant au format datetime, on facilite grandement leur manipulation. Les dates sous forme de chaînes sont traitées comme du texte ordinaire, sans méthodes spécifiques pour les opérations liées aux dates. On utilise alors les méthodes de manipulation de chaînes, qui ne sont pas idéales pour le traitement de dates.

Prenons l'exemple de la comparaison de deux dates. Si elles sont sous forme de chaînes, la comparaison sera une opération textuelle. Avec le format datetime, nous pouvons utiliser les opérateurs de comparaison numériques de manière intuitive. Cette simple opération illustre l'intérêt de la conversion. Bien d'autres scénarios, comme l'addition, la soustraction, ou la gestion des fuseaux horaires, démontrent à quel point la conversion vers un objet datetime est primordiale pour une gestion efficace.

Explorons maintenant différentes approches pour convertir une chaîne de caractères datetime en objet datetime. Nous utiliserons les modules intégrés de Python, ainsi que le module tiers dateutil. Commençons par le module datetime.

Utilisation du Module Datetime

Le module datetime est un module intégré de Python conçu pour manipuler les dates et les heures. Il comprend plusieurs classes utiles. Nous utiliserons notamment la classe datetime.datetime pour effectuer nos conversions.

La classe datetime.datetime possède diverses méthodes, dont la méthode strptime, qui est essentielle pour la conversion qui nous intéresse.

datetime.strptime

La méthode datetime.strptime est utilisée pour transformer une chaîne de caractères datetime en un objet datetime. Elle prend deux arguments : la chaîne datetime et son format. Elle retourne ensuite l'objet datetime correspondant.

Voici un exemple illustratif :

from datetime import datetime

string = "19-12-2022 09:37:56 PM"
formatting = "%d-%m-%Y %I:%M:%S %p"
print(datetime.strptime(string, formatting))

L'exécution de ce code produit le résultat suivant :

2022-12-19 21:37:56

Nous avons converti avec succès une chaîne datetime en objet datetime en utilisant datetime.strptime. Il est crucial que le format spécifié dans la méthode corresponde parfaitement à la chaîne de caractères. Un format incorrect peut engendrer des erreurs ou des résultats erronés.

Des codes de formatage ont été utilisés pour le format datetime. Vous pouvez consulter la documentation pour connaître tous les codes disponibles.

La méthode datetime.strptime retourne une date et une heure complètes. Si l'on souhaite obtenir la date et l'heure séparément, on peut utiliser les méthodes date et time de l'objet datetime. Voyons cela :

from datetime import datetime

string = "19-12-2022 09:37:56 PM"
formatting = "%d-%m-%Y %I:%M:%S %p"

## getting date separately
print("Date:", datetime.strptime(string, formatting).date())

## getting time separately
print("Time:", datetime.strptime(string, formatting).time())

L'exécution de ce code affiche :

Date: 2022-12-19
Time: 21:37:56

Les méthodes date et time retournent respectivement des objets date et time, qui ont leurs propres méthodes spécifiques.

Si le format fourni à datetime.strptime ne correspond pas à la chaîne datetime, des erreurs se produisent. Pour illustrer cela, exécutez le code ci-dessous :

from datetime import datetime

string = "19:12:2022 09:37:56 PM"
formatting = "%d-%m-%Y %I:%M:%S %p"
print(datetime.strptime(string, formatting))

Ce code génère une erreur car le formatage ne correspond pas à la chaîne datetime. Pour gérer ces erreurs, nous pouvons utiliser les blocs try-except de Python. Voici une version améliorée du code :

from datetime import datetime

try:
    string = "19:12:2022 09:37:56 PM"
    formatting = "%d-%m-%Y %I:%M:%S %p"
    print(datetime.strptime(string, formatting))
except ValueError as error:
    print(error)

L'exécution de ce code affichera le message d'erreur sans interrompre l'exécution du programme :

time data '19:12:2022 09:37:56 PM' does not match format '%d-%m-%Y %I:%M:%S %p'

Il est également possible d'ajouter une structure try-except pour la méthode parser.parse que nous verrons par la suite. Cela permet d'éviter l'arrêt brutal du programme en cas d'erreur. Ce mécanisme est important à retenir même s'il n'est pas directement lié à la conversion elle-même.

C'est tout pour le module datetime. Passons maintenant au module dateutil.

Utilisation de Dateutil

Le module dateutil propose des extensions au module datetime. Il facilite grandement la manipulation des dates et des heures grâce à ses méthodes conviviales. Installons ce module via la commande suivante :

pip install python-dateutil

La méthode qui nous intéresse est dateutil.parser.parse. Voyons comment convertir une chaîne datetime en objet datetime en utilisant cette méthode.

parser.parse

La méthode parser.parse prend une chaîne datetime en argument et la convertit automatiquement en objet datetime. Il n'est pas nécessaire de spécifier le format de la chaîne. Voici un exemple :

from dateutil import parser

string = "19-12-2022 09:37:56 PM"
print(parser.parse(string))

L'exécution de ce code produit :

2022-12-19 21:37:56

La chaîne datetime doit respecter un format reconnu par la méthode parser.parse. Dans le cas contraire, une erreur se produira. Il est conseillé de consulter la documentation pour connaître les formats de chaîne acceptés pour la conversion automatique.

Comme la méthode parser.parse retourne un objet datetime, nous pouvons accéder séparément à la date et à l'heure, comme nous l'avons fait avec le module datetime. Voici comment :

from dateutil import parser

string = "19-12-2022 09:37:56 PM"
print("Date:", parser.parse(string).date())
print("Time:", parser.parse(string).time())

L'exécution de ce code affichera :

Date: 2022-12-19
Time: 21:37:56

Comme vous pouvez le constater, dateutil simplifie considérablement la manipulation des dates et des heures. N'hésitez pas à explorer la documentation pour découvrir toutes ses fonctionnalités.

Conclusion

Nous avons exploré deux modules pour convertir une chaîne datetime en objet datetime : un module intégré et un module tiers. Il existe un autre module intégré appelé time, qui permet aussi de réaliser des conversions similaires. N'hésitez pas à l'explorer par vous-même. Vous trouverez cela aisé si vous avez bien compris les principes de conversion via les modules datetime et dateutil.

D'autres bibliothèques pourraient permettre de faire la même chose. Les modules utilisés dans ce tutoriel sont standards et largement répandus. Vous pouvez vous renseigner sur les autres modules et choisir celui qui convient le mieux à vos besoins.

Vous pouvez également explorer les méthodes pour calculer les différences de temps en Python.

Bon codage ! 🙂

Auteur
France

Rédacteur tech, guides pratiques et astuces numériques.