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 🙂