Introduction
Les modules datetime
et time
de Python incluent tous deux une méthode de classe strptime()
pour convertir des chaînes en objets.
Dans cet article, vous utiliserez strptime()
pour convertir des chaînes en objets datetime
et struct_time()
.
Déployez vos applications Python depuis GitHub en utilisant la plateforme d’application DigitalOcean. Laissez DigitalOcean se charger de mettre à l’échelle votre application.
Conversion d’une chaîne en objet datetime
en utilisant datetime.strptime()
La syntaxe de la méthode datetime.strptime()
est :
datetime.strptime(date_string, format)
La méthode datetime.strptime()
renvoie un objet datetime
qui correspond à la chaîne de date analysée par le format. Les deux arguments sont requis et doivent être des chaînes de caractères.
Pour plus de détails sur les directives de format utilisées dans datetime.strptime()
, référez-vous aux Codes de format strftime()
et strptime()
dans la documentation Python.
Convertir une chaîne en objet datetime.datetime()
Exemple
L’exemple suivant convertit une chaîne de date et d’heure en un objet datetime.datetime()
et affiche le nom de la classe ainsi que la valeur de l’objet résultant:
from datetime import datetime
datetime_str = '09/19/22 13:55:26'
datetime_object = datetime.strptime(datetime_str, '%m/%d/%y %H:%M:%S')
print(type(datetime_object))
print(datetime_object) # imprimé dans le format par défaut
La sortie est:
<class 'datetime.datetime'>
2022-09-19 13:55:26
Convertir une chaîne en objet datetime.date()
Exemple
L’exemple suivant convertit une chaîne de date en un objet datetime.date()
et affiche le type de classe ainsi que la valeur de l’objet résultant:
from datetime import datetime
date_str = '09-19-2022'
date_object = datetime.strptime(date_str, '%m-%d-%Y').date()
print(type(date_object))
print(date_object) # imprimé dans le format par défaut
La sortie est:
<class 'datetime.date'>
2022-09-19
Convertir une chaîne en objet datetime.time()
Exemple
L’exemple suivant convertit une chaîne de temps en un objet datetime.time()
, et imprime le type de classe et la valeur de l’objet résultant:
from datetime import datetime
time_str = '13::55::26'
time_object = datetime.strptime(time_str, '%H::%M::%S').time()
print(type(time_object))
print(time_object)
La sortie est:
<class 'datetime.time'>
13:55:26
Convertir une chaîne en objet datetime.datetime()
avec exemple de localisation
L’exemple suivant convertit une chaîne de date en allemand en un objet datetime.datetime()
, et imprime le type de classe et la valeur de l’objet résultant:
from datetime import datetime
import locale
locale.setlocale(locale.LC_ALL, 'de_DE')
date_str_de_DE = '16-Dezember-2022 Freitag' # Locale de de_DE
datetime_object = datetime.strptime(date_str_de_DE, '%d-%B-%Y %A')
print(type(datetime_object))
print(datetime_object)
La sortie est:
<class 'datetime.datetime'>
2022-12-16 00:00:00
Remarquez que l’objet résultant n’inclut pas le nom du jour de la semaine de la chaîne d’entrée car un objet datetime.datetime()
inclut le jour de la semaine uniquement en tant que nombre décimal.
Conversion d’une chaîne en objet struct_time()
en utilisant time.strptime()
La syntaxe pour la méthode time.strptime()
est:
time.strptime(time_string[, format])
La méthode time.strptime()
renvoie un objet time.struct_time()
qui correspond à la chaîne de temps analysée par le format. La chaîne de temps est requise et les deux arguments doivent être des chaînes de caractères. Si le format n’est pas fourni, la valeur par défaut est :
'%a %b %d %H:%M:%S %Y'
Cela correspond au format renvoyé par la fonction ctime()
.
Les directives de format sont les mêmes pour time.strptime()
et time.strftime()
. Pour en savoir plus sur les directives de format pour le module time
dans la documentation Python.
Convertir une chaîne en objet struct_time()
avec un exemple de format fourni
L’exemple suivant convertit une chaîne de temps en un objet time.struct_time()
en fournissant l’argument format, et imprime la valeur de l’objet résultant :
import time
time_str = '11::33::54'
time_obj = time.strptime(time_str, '%H::%M::%S')
print("A time.struct_time object that uses the format provided:")
print(time_obj)
La sortie est :
A time.struct_time object that uses the format provided:
time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1,
tm_hour=11, tm_min=33, tm_sec=54, tm_wday=0, tm_yday=1,
tm_isdst=-1)
Comme le montre la sortie, lorsque vous convertissez une chaîne en un objet time.struct_time()
, la méthode strptime()
utilise des valeurs de substitution pour toutes les directives de format qui ne sont pas définies dans l’argument format.
Convertir une chaîne en objet struct_time()
en utilisant le format par défaut
Si vous ne fournissez pas d’argument format lors de la conversion d’une chaîne temporelle en un objet time.struct_time()
, le format par défaut est utilisé et une erreur se produit si la chaîne d’entrée ne correspond pas exactement au format par défaut suivant:
'%a %b %d %H:%M:%S %Y'
L’exemple suivant convertit une chaîne temporelle en un objet time.struct_time()
sans fournir d’argument format, et affiche la valeur de l’objet résultant:
import time
# format par défaut - "%a %b %d %H:%M:%S %Y"
time_str_default = 'Mon Dec 12 14:55:02 2022'
time_obj_default = time.strptime(time_str_default)
print("A time.struct_time object that uses the default format:")
print(time_obj_default)
Le résultat est:
A time.struct_time object that uses the default format:
time.struct_time(tm_year=2022, tm_mon=12, tm_mday=12,
tm_hour=14, tm_min=55, tm_sec=2, tm_wday=0, tm_yday=346,
tm_isdst=-1)
Comme le montre la sortie, lors de la conversion d’une chaîne en un objet time.struct_time()
, la méthode strptime()
utilise des valeurs de substitution pour toutes les directives de format non définies dans l’argument format ou par le format par défaut si aucun argument format n’est fourni.
Résolution des erreurs de strptime()
Si la chaîne d’entrée ne peut pas être analysée par strptime()
en utilisant le format fourni, alors une ValueError
est levée. Vous pouvez utiliser le bloc try
pour tester les erreurs d’analyse, ainsi que le bloc except
pour afficher les résultats. Les messages d’erreur ValueError
que vous obtenez lorsque vous utilisez la méthode strptime()
expliquent clairement les causes des erreurs d’analyse. L’exemple suivant illustre quelques erreurs courantes, telles que des données supplémentaires et une incompatibilité de format :
from datetime import datetime
import time
datetime_str = '09/19/18 13:55:26'
try:
datetime_object = datetime.strptime(datetime_str, '%m/%d/%y')
except ValueError as ve1:
print('ValueError 1:', ve1)
time_str = '99::55::26'
try:
time_object = time.strptime(time_str, '%H::%M::%S')
except ValueError as ve2:
print('ValueError 2:', ve2)
La sortie est :
ValueError 1: unconverted data remains: 13:55:26
ValueError 2: time data '99::55::26' does not match format '%H::%M::%S'
Conclusion
Dans ce tutoriel, vous avez converti des chaînes de date et d’heure en objets datetime
et time
en utilisant Python. Poursuivez votre apprentissage avec d’autres tutoriels Python.
Source:
https://www.digitalocean.com/community/tutorials/python-string-to-datetime-strptime