La conversion d’un type de données en 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 les dates, nécessitent des modules supplémentaires pour les conversions. Nous avons besoin de modules, en particulier pour les conversions de datetime, car il n’a jamais été facile pour les programmeurs de les utiliser. Heureusement, Python dispose de modules intégrés pour travailler avec les dates.

Nous allons apprendre à convertir une chaîne datetime en un objet datetime en Python en utilisant différents modules. Avant d’en arriver là, voyons pourquoi nous avons besoin d’une telle conversion.

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 le faire si elles sont au format chaîne de caractères. En les convertissant au format datetime, il est très facile de travailler avec elles. Les dates dans les chaînes de caractères sont comme des chaînes de caractères normales. Il n’y a pas de méthodes spéciales pour travailler avec les dates. Il y aura des méthodes générales pour les chaînes de caractères, dont nous n’aurons pas besoin lorsque nous travaillerons avec des dates.

Supposons que nous devions comparer deux dates. Si elles sont au format chaîne de caractères, nous pouvons les comparer correctement. Si elles sont au format datetime, nous pouvons utiliser les opérateurs de comparaison comme pour les nombres.

Il ne s’agit là que d’un des scénarios dans lesquels la conversion au format datetime facilite les choses. Il existe de nombreux scénarios comme l’ajout de dates, la soustraction, la gestion des fuseaux horaires, etc., où la conversion d’une chaîne au format datetime en un objet datetime nous rend la vie plus facile que jamais.

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

Utilisation de datetime

Le module datetime est un module intégré de Python qui est utilisé pour travailler avec des dates et des heures. Il existe de nombreuses classes dans ce module qui nous aident à travailler avec les dates et les heures. Nous utiliserons la classe datetime .date time pour la conversion.

La classe datetime .date time possède de nombreuses méthodes. Nous sommes intéressés par la méthode strptime qui nous aidera dans la conversion. Vérifions-la.

datetime.strptime

La méthode datetime.strptime est utilisée pour convertir une chaîne datetime en un objet datetime. Elle prend deux chaînes, l’une est la chaîne datetime et l’autre est le format de cette chaîne datetime. Elle 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 obtiendrez le résultat suivant.

2022-12-19 21:37:56

Nous avons pris une chaîne de caractères datetime et l’avons convertie en objet datetime à l’aide de la méthode datetime.strptime. Assurez-vous que le format que vous fournissez à la méthode correspond exactement à la chaîne datetime . Si ce n’est pas le cas, vous risquez d’obtenir une erreur ou un résultat incorrect.

Nous avons utilisé certains codes de formatage pour le format datetime. Vous pouvez consulter tous les codes de formatage dans la documentation.

La méthode datetime.strptime renvoie une date complète. Si vous souhaitez obtenir la date et l’heure séparément, vous pouvez utiliser les méthodes date time 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"

## obtenir la date séparément
print("Date :", datetime.strptime(string, formatting).date())

## obtenir l'heure séparément
print("Time :", datetime.strptime(string, formatting).time())

Exécutez le code ci-dessus et vous obtiendrez le résultat suivant.

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

Les méthodes date et time renvoient 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 va générer une erreur car le formatage ne correspond pas à la chaîne de l’heure de la date. Pour gérer ce type d’erreur, nous pouvons utiliser le try-except de Python. 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)

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

le temps '19:12:2022 09:37:56 PM' ne correspond pas au format '%d-%m-%Y %I:%M:%S %p'

De la même manière, nous pouvons ajouter le try-except pour la méthode parser.parse à venir. Cela nous permet d’éviter de casser le code au milieu. Ceci 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.

Utiliser dateutil

Le module dateutil fournit des extensions au module datetime. Il rend le travail avec les dates et les heures beaucoup plus facile grâce à un grand nombre de 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 un objet datetime.

parser.parse

La méthode parser .parse prend une chaîne datetime et la convertit dans un format d’objet datetime. Nous n’avons pas besoin de fournir de formatage pour cette méthode. Elle 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 obtiendrez le résultat suivant.

2022-12-19 21:37:56

La chaîne datetime doit être dans un format particulier que la méthode parser .par se accepte. Si le format de la chaîne datetime n’est pas conforme au format souhaité, une erreur sera générée. Vous pouvez vérifier tous les formats de chaîne de date qu’elle accepte pour les conversions automatiques.

Comme la méthode parser.parse renvoie un 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())

Si vous exécutez le code ci-dessus, vous obtiendrez le résultat suivant.

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

Comme vous pouvez le constater, 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 vous-même. Ce ne sera pas difficile car vous avez déjà fait une chose similaire avec d’autres modules.

Il pourrait y avoir d’autres bibliothèques avec lesquelles nous pourrions réaliser la même chose. Les modules que nous avons utilisés dans ce tutoriel sont standard et largement utilisés. Vous pouvez explorer d’autres modules et choisir celui qui vous convient le mieux.

Vous pouvez également découvrir comment calculer le décalage horaire en python.

Joyeux codage 🙂