Comment convertir une chaîne en Datetime en Python

La conversion d’un type de données vers un autre type de données est cruciale dans tout langage de programmation. Presque tous les langages de programmation prennent en charge les conversions de type pour les types de données intégrés.

Les types de données personnalisés comme datetime nécessitent des modules supplémentaires pour les conversions. Nous avons besoin de modules, en particulier pour les conversions datetime car leur travail n’a jamais été facile pour les programmeurs. Heureusement, python a des modules intégrés pour fonctionner avec datetime.

Nous apprendrons comment convertir une chaîne datetime en un objet datetime en Python en utilisant différents modules. Avant de nous lancer là-dedans, voyons pourquoi nous devons le convertir en premier lieu.

Pourquoi avons-nous besoin de convertir une chaîne datetime en un objet datetime ?

Lorsque nous devons travailler avec des dates, il n’est pas facile de travailler si elles sont au format chaîne. Leur conversion au format datetime rend leur utilisation très facile. Les dates dans les chaînes sont comme des chaînes normales. Il n’aura pas de méthodes spéciales pour travailler avec les dates. Il aura des méthodes de chaîne générales, dont nous n’aurons pas besoin lorsque nous travaillerons avec des dates.

Disons que nous devons comparer deux dates. S’ils sont au format chaîne, nous pouvons les comparer correctement. S’ils sont au format datetime, nous pouvons utiliser les opérateurs de comparaison comme les nombres.

Ce n’est qu’un scénario où la conversion au format datetime facilite les choses. Il existe de nombreux scénarios tels que l’ajout de dates, la soustraction, la gestion des fuseaux horaires, etc., où la conversion d’une chaîne datetime en objet datetime rend nos vies plus faciles que jamais.

Cela dit, voyons différentes façons de convertir une chaîne datetime en un objet datetime. Nous utiliserons des modules datetime intégrés et des modules dateutil tiers pour convertir la chaîne datetime en objet datetime. Commençons par le module datetime

Utilisation de la date et de l’heure

Le datetime est un module intégré de Python qui est utilisé pour travailler avec les dates et les heures. Il y a beaucoup de classes dans ce module qui nous aident à travailler avec les dates et l’heure. Nous utiliserons la classe datetime.datetime pour la conversion.

Le datetime.datetime a de nombreuses méthodes. Nous sommes intéressés par la méthode strptime qui va nous aider dans la conversion. Vérifions.

datetime.strptime

La méthode datetime.strptime est utilisée pour convertir une chaîne datetime en un objet datetime. Il faut deux chaînes, l’une est la chaîne datetime et l’autre est le format de cette chaîne datetime. Et il renvoie l’objet datetime.

Voyons un exemple

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))

Si vous exécutez le code ci-dessus, vous verrez la sortie suivante.

2022-12-19 21:37:56

Nous avons pris une chaîne datetime et l’avons convertie en objet datetime en utilisant la méthode datetime.strptime. Assurez-vous que le format que vous fournissez à la méthode correspond exactement à la chaîne datetime. S’ils ne correspondent pas, vous pouvez obtenir une erreur ou une sortie incorrecte.

Nous avons utilisé des codes de formatage pour le format datetime. Vous pouvez vous référer à tous les codes de format dans la documentation.

La méthode datetime.strptime renvoie une date/heure complète. Si vous souhaitez obtenir la date et l’heure séparément, nous pouvons utiliser les méthodes date-heure de l’objet datetime. Voyons le code.

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())

Exécutez le code ci-dessus et vous verrez la sortie suivante.

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

Les méthodes date et time renverront respectivement leurs objets. Ils auront à nouveau leurs méthodes respectives pour les dates et les heures.

Nous avons fourni les chaînes et les formats corrects pour la méthode datetime.strptime que nous avons vue ci-dessus. Si nous ne les avons pas fournis correctement, nous obtiendrons des erreurs. Voyons comment gérer ces erreurs. Exécutez le code suivant.

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))

Le code ci-dessus générera une erreur car le formatage ne correspond pas à la chaîne datetime. Pour gérer ce genre d’erreurs, nous pouvons utiliser le try-except de Pythons. Ajoutons-le.

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)

Maintenant, exécutez à nouveau le code. Vous verrez le message d’erreur suivant sans casser le code.

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

De même, nous pouvons également ajouter le try-except pour la méthode parser.parse à venir. Cela nous aide à éviter de casser le code au milieu. Ce n’est pas spécialement lié au contexte de ce tutoriel, mais cela vous rappellera de l’utiliser dans votre code.

C’est tout pour le module datetime. Passons au module suivant dateutil.

Utilisation de dateutil

Le module dateutil fournit des extensions au module datetime. Cela facilite beaucoup le travail avec les dates et les heures avec de nombreuses méthodes faciles à utiliser. Installons le module avec 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.

analyseur.parser

La méthode parser.parse prendra une chaîne datetime et la convertira dans un format d’objet datetime respectif. Nous n’avons pas besoin de fournir de formatage pour cette méthode. Il convertira automatiquement la chaîne datetime donnée en objet datetime. Voyons un exemple.

from dateutil import parser

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

Si vous exécutez le code ci-dessus, vous verrez la sortie suivante.

2022-12-19 21:37:56

La chaîne datetime doit être dans un format particulier accepté par la méthode parser.parse. Il lancera une erreur si le format de chaîne datetime n’est pas conforme au format souhaité. Vous pouvez vérifier tous les formats de chaîne datetime qu’il accepte pour les conversions automatiques.

Comme la méthode parser.parse renvoie l’objet datetime, nous pouvons accéder aux objets date et heure séparément comme nous l’avons vu avec le module datetime. Voyons le code.

from dateutil import parser

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

Vous pouvez voir la sortie ci-dessous si vous exécutez le code ci-dessus.

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

Comme vous pouvez le voir, dateutil facilite le travail avec les dates et les heures. Vous pouvez explorer le module dans la documentation.

Conclusion

Nous avons utilisé un module intégré et un module tiers pour convertir la chaîne datetime en un objet DateTime. Il existe un autre module intégré appelé time avec lequel nous pouvons convertir la chaîne datetime en un objet DateTime similaire aux modules datetime et dateutil. Essayez-le vous-même. Ce ne sera pas difficile car vous avez déjà fait la même chose avec d’autres modules.

Il pourrait y avoir plus de bibliothèques avec lesquelles nous pouvons réaliser la même chose. Les modules que nous avons utilisés dans le didacticiel Thing sont standard et largement utilisés. Vous pouvez en savoir plus sur les autres modules et choisir celui qui vous convient le mieux.

Vous pouvez également explorer comment calculer la différence de temps en python.

Bon codage 🙂