Accéder au contenu principal

Chaîne Python vers DateTime : Comment convertir des chaînes de caractères en objets date-heure en Python ?

Dans ce tutoriel, apprenez tout sur le module datetime de Python. Vous trouverez un guide étape par étape pour la conversion de chaînes de caractères en date, ainsi que des exemples de code et des erreurs courantes.
Actualisé 4 oct. 2024  · 9 min de lecture

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

Maîtrisez Python pour la science des données et acquérez des compétences recherchées.
Commencez à apprendre gratuitement

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.

Demandez une démonstration dès aujourd'hui !
business-homepage-hero.png

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.

Timeline mobile.png
Sujets

En savoir plus sur Python

cours

Time Series Analysis in Python

4 hr
61.5K
In this four-hour course, you’ll learn the basics of analyzing time series data in Python.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow
Apparenté

blog

Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux

Vous êtes actuellement à la recherche d'un emploi qui utilise Snowflake ? Préparez-vous à répondre à ces 20 questions d'entretien sur le flocon de neige pour décrocher le poste !
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 min

Voir plusVoir plus