Comment analyser une chaîne en une date/heure en Python (strptime)

Découvrez comment convertir des chaînes en objets datetime en Python. Maîtrisez la méthode strptime, analysez les chaînes de date, gérez les fuseaux horaires et évitez les erreurs de format.

Essayez cette solution dans l'éditeur

Aperçu

Lors de la création d'applications qui traitent les soumissions de formulaires utilisateur, grattent des bases de données Web, analysent les journaux du serveur ou importent des feuilles CSV, vous recevrez fréquemment des informations de date et d'heure sous forme de chaînes de texte brut (par exemple, « 2026-05-25 15:45 »). Étant donné que vous ne pouvez pas effectuer de calculs, d'arithmétique de date ou de tri sur des chaînes, vous devez les analyser dans des objets datetime Python.

La méthode principale pour cette conversion est `datetime.strptime(date_string, format_string)`. Le nom signifie « temps d'analyse de chaîne ». La fonction prend la chaîne de date brute et un modèle de format contenant des directives (comme `%Y` pour l'année, `%m` pour le mois et `%d` pour le jour) et renvoie un objet datetime correspondant.

Si la chaîne d'entrée ne correspond pas exactement au modèle de format fourni, Python génère une « ValueError ». Pour éviter les plantages, enveloppez toujours les opérations `strptime()` dans un bloc `try-sauf`. Pour les applications analysant diverses entrées de date non structurées, des bibliothèques externes telles que « python-dateutil » peuvent aider à automatiser la détection de l'analyseur.

Sortie de code et d'exécution

Ce script montre l'analyse des chaînes de date à l'aide de datetime.strptime, la gestion des entrées non valides et le calcul des différences de date.

parse_datetime.py
Essayez dans l'éditeur
from datetime import datetime

# 1. Basic parsing using strptime
date_str = "2026-05-25 18:30:00"
format_template = "%Y-%m-%d %H:%M:%S"

parsed_date = datetime.strptime(date_str, format_template)
print("Parsed DateTime:", parsed_date)
print("Month parsed:", parsed_date.month)
print("Hour parsed:", parsed_date.hour)

# 2. Handling parse errors safely
bad_date_str = "25/05/2026"
try:
    datetime.strptime(bad_date_str, "%Y-%m-%d")
except ValueError as e:
    print(f"\nParse Error: {e}")

# Correcting the format
corrected_date = datetime.strptime(bad_date_str, "%d/%m/%Y")
print("Corrected Parse:", corrected_date.date())
Sortie terminale
Parsed DateTime: 2026-05-25 18:30:00
Month parsed: 5
Hour parsed: 18

Parse Error: time data '25/05/2026' does not match format '%Y-%m-%d'
Corrected Parse: 2026-05-25

Mise en œuvre étape par étape

  • Importez la classe datetime depuis le module datetime.
  • Identifiez la structure exacte de votre chaîne de date (par exemple, jour, mois, séparateurs).
  • Appelez datetime.strptime(date_string, format_pattern) avec les directives appropriées (comme %Y, %m, %d).
  • Enveloppez l'instruction d'analyse dans un bloc try-sauf ValueError pour gérer les chaînes mal formées avec élégance.

Foire aux questions

Quelle est la différence entre strftime et strptime ?

strptime (string parse time) analyse une chaîne pour créer un objet datetime. strftime (string format time) formate un objet datetime en une représentation sous forme de chaîne lisible.

Comment analyser les chaînes de date ISO 8601 (par exemple, "2026-05-25T18:30:00Z") ?

DansPython 3.7+, vous pouvez utiliser la fonction intégrée datetime.fromisoformat(string), qui gère efficacement les chaînes ISO sans nécessiter de modèle de formatage manuel.

Sujets connexes

Ressources Python recommandées

Développez vos connaissances avec des didacticiels interactifs, des aide-mémoire et des comparaisons de codes associés.