cours
Chaîne Python vers DateTime : Comment convertir des chaînes de caractères en objets date-heure en Python ?
Vous voulez aller à l'essentiel et comprendre le codage des dates ?
Les données relatives à la date et à l'heure sont un élément essentiel de nombreuses applications logicielles, et leur traitement efficace est une compétence cruciale pour les développeurs. En Python, les chaînes sont un type de données couramment utilisé pour représenter les dates et les heures, mais en tant que scientifiques et ingénieurs des données, nous sommes souvent amenés à convertir ces chaînes en objets de type datetime pour effectuer diverses opérations, telles que le tri ou la comparaison.
La conversion de chaînes de caractères en objets de type datetime peut s'avérer délicate, en particulier pour les novices en Python. Dans cet article, nous allons donc parcourir les étapes nécessaires à l'utilisation de ces méthodes et fournir des exemples de code en cours de route. Que vous soyez un développeur chevronné ou que vous débutiez, plongeons dans le monde des objets de type datetime en Python !
Pour exécuter facilement vous-même tous les exemples de code de ce tutoriel, vous pouvez créer gratuitement un classeur DataLab dans lequel Python est préinstallé et qui contient tous les exemples de code. Pour plus de pratique sur la façon de convertir des chaînes en objets datetime, consultez cet exercice pratique de DataCamp.
Apprenez Python à partir de zéro
Introduction au module datetime de Python
Le module datetime, qui est intégré à Python, peut être utilisé chaque fois que vous avez besoin de travailler avec des dates, des heures ou des intervalles de temps pour n'importe quelle application construite à l'aide de Python. Il fournit des classes et des méthodes pratiques pour représenter et manipuler les données relatives à la date et à l'heure.
Comprenons les principales classes de ce module, car nous allons les convertir en objets de type datetime :
1. datetime.date
Cette classe représente une date (année, mois et jour) et fournit des méthodes pour travailler avec les dates, comme le calcul de la différence entre deux dates et le formatage des dates sous forme de chaînes de caractères.
Supposons que nous disposions d'un ensemble de données contenant les cours quotidiens des actions d'une entreprise. Nous pouvons utiliser la classe date pour extraire les dates de l'ensemble de données et tracer les cours des actions au fil du temps.
Voici un extrait illustrant l'utilisation de la classe date :
from datetime import date
# create a date object representing March 1, 2023
start_date = date(2023, 3, 1)
# extract information such as the year, month, and day
year = start_date.year
month = start_date.month
day = start_date.day
# get the day of the week (Note: Monday is coded as 0, and Sunday as 6)
weekday = start_date.weekday()
# the date can be formatted as a string if needed
date_str = start_date.strftime('%Y-%m-%d')
2. datetime.time
Cette classe représente l'heure (heure, minute, seconde et microseconde) et fournit des méthodes pour travailler avec les heures, telles que la comparaison des heures et le formatage des heures sous forme de chaînes de caractères.
Supposons que nous disposions d'un ensemble de données contenant l'heure de fin d'une course ; nous pouvons utiliser la classe time pour extraire les heures et les minutes de la fin de la course pour chaque concurrent.
from datetime import time
# create a time object with the microsecond granularity
end_time = time(15, 45, 30, 500000)
# get the hour and minute
hour = end_time.hour
minute = end_time.minute
second = end_time.second
microsecond = end_time.microsecond
3. datetime.datetime
Cette classe représente une date et une heure et fournit des méthodes pour travailler avec les deux. Il combine les fonctionnalités des classes de date et d'heure.
Il est couramment utilisé dans les tâches d'analyse de données qui impliquent des séries de données à haute résolution temporelle, telles que les données horaires ou minute par minute. Supposons que nous disposions d'un ensemble de données contenant la demande horaire d'électricité pour une ville. Nous pouvons utiliser la classe datetime pour extraire la date et l'heure de l'ensemble de données et tracer la demande d'électricité au fil du temps.
from datetime import datetime
# create a datetime object representing March 1, 2023 at 9:30 AM
start_datetime = datetime(2023, 3, 1, 9, 30)
# get the year, month, day, hour, and minute
year = start_datetime.year
month = start_datetime.month
day = start_datetime.day
hour = start_datetime.hour
minute = start_datetime.minute
4. datetime.timedelta
Cette classe représente une durée ou un intervalle de temps et fournit des méthodes pour travailler avec des intervalles de temps, comme l'ajout ou la soustraction d'intervalles de temps à des dates ou des heures.
Supposons que nous disposions d'un ensemble de données contenant les heures de début et de fin d'un ensemble d'événements et que nous souhaitions calculer la durée totale de tous les événements. Nous pouvons utiliser la classe timedelta pour calculer la durée de chaque événement et en faire la somme.
from datetime import timedelta
# create a timedelta object representing 3 hours and 15 minutes
event_duration = timedelta(hours=3, minutes=15)
# get the total duration in seconds
event_duration_seconds = event_duration.total_seconds()
# add the duration to a start time to get an end time
event_start_time = datetime(2023, 3, 1, 18, 15)
event_end_time = event_start_time + event_duration
Dans tous ces cas, nous avons utilisé des objets de type datetime, mais dans la pratique, les données réelles restent souvent des chaînes de caractères. La conversion en objet datetime permet de débloquer toutes les fonctionnalités susmentionnées, qui sont très utiles pour les analyses et les applications de science des données.
Améliorez les compétences de votre équipe en Python
Formez votre équipe à Python avec DataCamp for Business. Une formation complète, des projets pratiques et des indicateurs de performance détaillés pour votre entreprise.

Convertir une chaîne de caractères en un objet datetime en Python en utilisant datetime.strptime()
En Python, nous pouvons utiliser la méthode datetime.strptime() pour convertir une chaîne de caractères en un objet datetime. La méthode strptime() prend deux arguments : la chaîne à convertir et une chaîne de format spécifiant le format de la chaîne d'entrée.
La chaîne de format utilise une combinaison de codes de formatage pour représenter les différents composants de la date et de l'heure. Voici quelques-uns des codes de formatage les plus couramment utilisés :
- %Y : Année à 4 chiffres
- %y : Année à 2 chiffres
- %m : Mois à 2 chiffres (01-12)
- %d : Jour du mois à 2 chiffres (01-31)
- %H : Heure à 2 chiffres (00-23)
- %M : Minute à 2 chiffres (00-59)
- %S : Seconde à 2 chiffres (00-59)
Maintenant que nous comprenons les directives strptime, le processus de conversion des chaînes de caractères en objets datetime peut être simplifié.
- Étape 01 : Analysez la chaîne date-heure qui peut être convertie pour y trouver des motifs qui correspondent aux codes de formatage.
- Étape 02 : Créez le format date-heure à partir des directives strptime().
- Étape 03 : Passez la chaîne et le format à la fonction et recevez l'objet en sortie.
Mettons ces étapes en œuvre.
Conversion d'une chaîne de caractères dans un format spécifique en un objet datetime
from datetime import datetime
# Example with the standard date and time format
date_str = '2023-02-28 14:30:00'
date_format = '%Y-%m-%d %H:%M:%S'
date_obj = datetime.strptime(date_str, date_format)
print(date_obj)
# Example with a different format
date_str = '02/28/2023 02:30 PM'
date_format = '%m/%d/%Y %I:%M %p'
date_obj = datetime.strptime(date_str, date_format)
print(date_obj)
Dans le premier exemple, nous avons une chaîne représentant une date et une heure au format "YYYY-MM-DD HH:MM:SS", et pour le deuxième exemple dans un format différent, "MM/DD/YYYY HH:MM AM/PM".
Dans les deux cas, après avoir spécifié la chaîne de format correcte en tant que deuxième argument de strptime(), vous recevrez l'objet datetime correct.
Conversion d'une chaîne de caractères contenant des informations sur le fuseau horaire en un objet datetime
from datetime import datetime
date_str = '2023-02-28 14:30:00+05:30'
date_format = '%Y-%m-%d %H:%M:%S%z'
date_obj = datetime.strptime(date_str, date_format)
print(date_obj)
Dans cet exemple, nous avons une chaîne représentant une date et une heure avec des informations sur le fuseau horaire au format "YYYY-MM-DD HH:MM:SS+TZOFFSET", où TZOFFSET est le décalage du fuseau horaire en heures et minutes par rapport à UTC. Nous spécifions la chaîne de format comme deuxième argument de strptime(), y compris le code de formatage %z pour analyser le décalage du fuseau horaire.
Si la fonction que nous venons de voir peut sembler simple en théorie, elle peut aussi être une source de frustration lorsque les choses tournent mal en pratique.
Dépannage des erreurs courantes de strptime()
Voici quelques erreurs courantes que vous pourriez rencontrer et comment les résoudre :
ValueError : la donnée temporelle "date_string" ne correspond pas au format "%Y-%m-%d %H:%M:%S".
L'erreur la plus fréquente se produit lorsque la chaîne d'entrée ne correspond pas à la chaîne de format. Veuillez vérifier que la chaîne d'entrée et la chaîne de format correspondent exactement.
import datetime
# When input has two-digit year instead of four-digit year
date_str = '23-03-01'
date_obj = datetime.datetime.strptime(date_str, '%y-%m-%d')
# Raises ValueError: time data '23-03-01' does not match format '%y-%m-%d'
# When the input has missing leading zeros for hour and minute
time_str = '8:30'
time_obj = datetime.datetime.strptime(time_str, '%H:%M')
# Raises ValueError: time data '8:30' does not match format '%H:%M'
TypeError : strptime() argument 1 doit être str, pas 'int'
L'erreur suivante se produit lorsque vous passez un entier à datetime.strptime() ou time.strptime() au lieu d'une chaîne de caractères. Assurez-vous que toutes les valeurs que vous transmettez à la fonction sont des chaînes de caractères.
# Example 1: Integer instead of string
date_int = 20230301
date_obj = datetime.datetime.strptime(date_int, '%Y%m%d')
# Raises TypeError: strptime() argument 1 must be str, not int
# Example 2: List instead of string
date_list = [2023, 3, 1]
date_obj = datetime.datetime.strptime(date_list, '%Y-%m-%d')
# Raises TypeError: strptime() argument 1 must be str, not list
ValueError : des données non converties subsistent : ':00'
Cette erreur se produit lorsqu'il existe des caractères résiduels dans la chaîne d'entrée, qui ne sont pas pris en compte par la chaîne de format. Par exemple, cette erreur se produira si la chaîne de format ne spécifie que l'année, le mois et le jour, mais que la chaîne d'entrée contient également l'heure. Pour déboguer cette erreur, assurez-vous que la chaîne de format correspond à la totalité de la chaîne d'entrée.
# when input string contains time of day
date_str = '2023-03-01 12:30:00'
date_obj = datetime.datetime.strptime(date_str, '%Y-%m-%d')
# Raises ValueError: unconverted data remains: 12:30:00
# When input string contains extra characters
date_str = '2023-03-01T00:00:00Z'
date_obj = datetime.datetime.strptime(date_str, '%Y-%m-%d')
# Raises ValueError: unconverted data remains: T00:00:00Z
Conclusion
On peut dire que la méthode datetime.strptime() offre un moyen souple et puissant de convertir des chaînes de caractères en objets datetime en Python et qu'elle peut être utilisée pour gérer un large éventail de formats de date et d'heure. Pourquoi ne pas vous procurer notre feuille de contrôle sur les dates et les heures pour vous y référer ultérieurement ?
Après avoir compris les dates et les heures, l'étape suivante consiste à les mettre en pratique dans le cadre d'un projet. Nous vous recommandons de choisir l'un d'entre eux et de consolider votre apprentissage :
Nous sommes d'accord pour dire que les données de date et d'heure dans le monde réel sont compliquées, mais il vous suffit de comprendre les formats et les modèles qui se cachent derrière chaque type de date et d'heure que vous avez dans vos données et d'utiliser les bibliothèques dont vous disposez à bon escient.
Obtenez une certification dans le rôle de Data Scientist de vos rêves
Nos programmes de certification vous aident à vous démarquer et à prouver aux employeurs potentiels que vos compétences sont adaptées à l'emploi.

En savoir plus sur Python
cours
Manipulating Time Series Data in Python
cours
Visualizing Time Series Data in Python
blog
Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux

Nisha Arya Ahmed
20 min