OUJOOD.COM
Contrairement aux langages qui intègrent la date dans leurs types de base, Python exige d'importer un module dédié : datetime. Ce n'est pas une contrainte — c'est un choix de conception qui garde le langage léger. Le module regroupe tout ce dont vous avez besoin : lire la date du jour, calculer un écart entre deux moments, reformater une date selon une locale, ou convertir une chaîne en objet exploitable.
Dans cette page, vous allez parcourir les quatre grandes classes du module (date, time, datetime et timedelta), puis les deux méthodes de formatage incontournables (strftime et strptime). Les exemples sont progressifs — commencez par le premier, et chaque bloc suivant s'appuie sur ce que vous venez de voir.
Pour travailler avec les dates et heures, vous devez importer le module datetime en début de fichier :
import datetime ou import datetime as dteLe module datetime en Python
Le module datetime met à votre disposition plusieurs classes. Les quatre les plus utilisées sont :
- date — représente une date (année, mois, jour)
- time — représente une heure (heures, minutes, secondes, microsecondes)
- datetime — combine date et heure dans un seul objet
- timedelta — représente une durée, utile pour les calculs entre dates
Si vous voulez voir l'ensemble des attributs disponibles dans le module, la fonction dir() vous le liste d'un coup :
# Lister le contenu du module datetime
import datetime as dte
print(dir(dte))
['MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'date', 'datetime', 'datetime_CAPI', 'sys', 'time', 'timedelta', 'timezone', 'tzinfo']
Et si vous appliquez dir() directement sur la classe datetime, vous obtenez la liste de ses méthodes :
# Lister les méthodes de la classe datetime
import datetime as dte
print(dir(dte.datetime))
Les méthodes les plus souvent utilisées dans la pratique :
- date, day, hour, minute, month
- now, replace, second, strftime, strptime
- time, timestamp, timetuple, timetz, today
- weekday, year
Exemple 1 : obtenir la date et l'heure actuelles
La méthode now() de la classe datetime renvoie un objet contenant la date et l'heure locales au moment de l'exécution. C'est le point d'entrée le plus courant.
# Récupérer la date et l'heure actuelles
import datetime
objet_datetime = datetime.datetime.now()
print(objet_datetime)
Au moment où vous exécutez ce code, Python affiche quelque chose comme :
2026-05-16 14:23:07.391042Ce que fait le code, étape par étape :
- On importe le module datetime avec import datetime.
- On accède à la classe datetime qui se trouve à l'intérieur du module — d'où la notation datetime.datetime.
- On appelle la méthode now() sur cette classe, qui renvoie un objet datetime avec la date et l'heure locales.
Exemple 2 : obtenir uniquement la date du jour
Si vous n'avez besoin que de la date (sans l'heure), utilisez la méthode today() de la classe date. On importe ici le module avec un alias pour raccourcir l'écriture :
# Obtenir la date du jour avec un alias de module
import datetime as dte
objet_date = dte.date.today()
print(objet_date)
Résultat affiché (date du jour au moment de l'exécution) :
2026-05-16La classe date (datetime.date)
La classe date sert à créer un objet représentant une date précise — uniquement l'année, le mois et le jour, sans heure. C'est la classe à utiliser quand la notion de temps n'a pas d'importance pour votre programme.
Exemple : créer un objet date pour une date précise
Le constructeur date() prend trois arguments dans l'ordre : année, mois, jour.
# Créer un objet date pour une date spécifique
import datetime
d = datetime.date(2026, 5, 16)
print(d)
Vous pouvez aussi n'importer que la classe date depuis le module, pour éviter de répéter datetime.date à chaque fois :
# Importer uniquement la classe date
from datetime import date
d = date(2026, 5, 16)
print(d)
Exemple : obtenir la date actuelle
La méthode today() crée un objet date contenant la date du jour, sans aucun argument à passer.
# Récupérer la date du jour
from datetime import date
ce_jour = date.today()
print("La date courante est : ", ce_jour)
Exemple : créer une date à partir d'un horodatage (timestamp)
Un timestamp Unix est un entier qui représente le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC. C'est un standard utilisé dans presque tous les systèmes informatiques pour stocker les dates de façon compacte. La méthode fromtimestamp() convertit cet entier en objet date lisible.
# Convertir un timestamp en date
from datetime import date
timestamp = date.fromtimestamp(1326244364)
print("La date est : ", timestamp)
Résultat : La date est : 2012-01-10
Exemple : extraire l'année, le mois et le jour séparément
Un objet date expose ses composantes en attributs directement accessibles : .year, .month et .day.
# Accéder aux composantes d'une date
from datetime import date
ce_jour = date.today()
print("L'année courante est :", ce_jour.year)
print("Le mois courant est :", ce_jour.month)
print("Le jour courant est :", ce_jour.day)
La classe time (datetime.time)
La classe time représente une heure locale, indépendamment de toute date. Elle est utile quand vous travaillez avec des horaires, des plannings, ou que vous voulez manipuler uniquement la partie "temps" d'un objet.
Exemple : créer des objets time
Le constructeur accepte les arguments dans l'ordre : heure, minute, seconde, microseconde. Tous sont optionnels et valent 0 par défaut.
# Différentes façons de créer un objet time from datetime import time # Sans argument : minuit par défaut temps1 = time() print("temps1 =", temps1) # Heure, minute, seconde en arguments positionnels temps2 = time(9, 44, 16) print("temps2 =", temps2) # Mêmes valeurs avec arguments nommés temps3 = time(hour=9, minute=44, second=16) print("temps3 =", temps3) # Avec les microsecondes temps4 = time(9, 44, 16, 334660) print("temps4 =", temps4)
temps1 = 00:00:00 temps2 = 09:44:16 temps3 = 09:44:16 temps4 = 09:44:16.334660
Exemple : accéder aux composantes d'un objet time
Comme pour la classe date, les attributs .hour, .minute, .second et .microsecond sont directement accessibles sur l'objet.
# Lire les composantes d'un objet time
from datetime import time
temps = time(9, 44, 16)
print("heure =", temps.hour)
print("minute =", temps.minute)
print("seconde =", temps.second)
print("microseconde =", temps.microsecond)
heure = 9 minute = 44 seconde = 16 microseconde = 0
Remarque : la microseconde n'a pas été passée au constructeur, donc Python retourne sa valeur par défaut : 0.
La classe datetime (datetime.datetime)
La classe datetime combine les informations d'une date et d'une heure dans un seul objet. C'est la plus polyvalente des quatre classes : elle vous permet de travailler avec un instant précis dans le temps, pas seulement une date ou une heure isolée.
Attention à la notation : le module s'appelle datetime et la classe aussi. On écrit donc datetime.datetime quand on importe le module entier, ou on utilise l'import direct from datetime import datetime pour simplifier.
Exemple : créer un objet datetime
Les trois premiers arguments (année, mois, jour) sont obligatoires. Les suivants (heure, minute, seconde, microseconde) sont optionnels et valent 0 par défaut.
# Créer des objets datetime avec différents niveaux de précision from datetime import datetime # Uniquement la date — heure initialisée à 00:00:00 a = datetime(2026, 5, 16) print(a) # Date et heure complètes avec microsecondes b = datetime(2026, 5, 16, 14, 30, 59, 342380) print(b)
2026-05-16 00:00:00 2026-05-16 14:30:59.342380
Afficher la date et l'heure actuelles
La méthode now() retourne un objet datetime avec la date et l'heure locales au moment de l'exécution. C'est la méthode à utiliser dans la plupart des cas pratiques.
# Afficher la date et l'heure actuelles
from datetime import datetime as dte
a = dte.now()
print(a)
En exécutant ce code, Python affiche la date et l'heure locales courantes, par exemple :
2026-05-16 14:23:07.391042Exemple : extraire chaque composante séparément
Un objet datetime expose toutes ses composantes en attributs. La méthode timestamp() retourne quant à elle la valeur Unix correspondante — pratique pour stocker une date en base de données ou comparer deux instants.
# Lire les attributs d'un objet datetime
from datetime import datetime as dte
a = dte.now()
print(a)
print("Année =", a.year)
print("mois =", a.month)
print("heure =", a.hour)
print("minute =", a.minute)
print("seconde =", a.second)
print("timestamp =", a.timestamp())
2026-05-16 14:23:07.391042 Année = 2026 mois = 5 heure = 14 minute = 23 seconde = 7 timestamp = 1747397387.391042
Formater la date et l'heure en Python
Un objet datetime est pratique à manipuler en code, mais difficile à lire pour un utilisateur. Le format par défaut (AAAA-MM-JJ HH:MM:SS) correspond à la norme ISO 8601 — c'est ce qu'on utilise pour les bases de données et les APIs. Mais pour afficher une date dans une interface, un e-mail ou un rapport, vous aurez souvent besoin d'un autre format.
Python fournit deux méthodes complémentaires pour cela : strftime() pour transformer un objet en chaîne formatée, et strptime() pour l'opération inverse — lire une chaîne et en extraire un objet datetime.
strftime() — transformer un objet datetime en chaîne
La méthode strftime() (abréviation de "string format time") prend une chaîne de format contenant des directives comme %Y, %m, %d, et retourne une chaîne de caractères mise en forme selon ces directives. Elle est disponible sur les objets date, time et datetime.
# Formater une date avec strftime() from datetime import datetime maintenant = datetime.now() # Format américain : mois/jour/année d = maintenant.strftime("%m/%d/%Y") print("La date est : ", d) # Heure seule t = maintenant.strftime("%H:%M:%S") print("Il est :", t) # Format complet américain s1 = maintenant.strftime("%m/%d/%Y, %H:%M:%S") print("s1:", s1) # Format complet français s2 = maintenant.strftime("%d/%m/%Y, %H:%M:%S") print("s2:", s2)
La date est : 05/16/2026 Il est : 14:23:07 s1: 05/16/2026, 14:23:07 s2: 16/05/2026, 14:23:07
Les variables d, t, s1 et s2 sont des chaînes de caractères (type str), pas des objets datetime. Voici la liste complète des directives disponibles :
| Directive | Description |
|---|---|
| %a | Jour de la semaine, version courte |
| %A | Jour de la semaine, version complète |
| %w | Jour de la semaine (0 = dimanche, 6 = samedi) |
| %d | Jour du mois 01-31 |
| %b | Nom du mois, version courte |
| %B | Nom du mois, version complète |
| %m | Mois en chiffres 01-12 |
| %y | Année sans le siècle (ex: 26) |
| %Y | Année complète (ex: 2026) |
| %H | Heure format 24h, 00-23 |
| %I | Heure format 12h, 00-12 |
| %p | AM ou PM |
| %M | Minute 00-59 |
| %S | Seconde 00-59 |
| %f | Microseconde 000000-999999 |
| %z | Décalage UTC (ex: +0100) |
| %Z | Nom du fuseau horaire |
| %j | Numéro du jour dans l'année, 001-366 |
| %U | Semaine de l'année (dimanche = 1er jour), 00-53 |
| %W | Semaine de l'année (lundi = 1er jour), 00-53 |
| %c | Date et heure selon la locale locale |
| %C | Siècle (ex: 20 pour 2026) |
| %x | Date selon la locale |
| %X | Heure selon la locale |
| %% | Le caractère littéral % |
| %G | Année ISO 8601 |
| %u | Jour de la semaine ISO 8601 (1=lundi, 7=dimanche) |
| %V | Numéro de semaine ISO 8601, 01-53 |
strptime() — transformer une chaîne en objet datetime
strptime() fait l'inverse de strftime() : elle prend une chaîne de caractères représentant une date, et la convertit en objet datetime. C'est indispensable quand vous lisez des dates depuis un fichier texte, un formulaire ou une API.
Elle prend deux arguments : la chaîne à analyser, et le format attendu (avec les mêmes directives que strftime).
# Convertir une chaîne en objet datetime avec strptime() from datetime import datetime # Chaîne de date au format texte chaine_date = "16 May, 2026" print("La chaîne de date est : ", chaine_date) # Conversion en objet datetime avec le format correspondant objet_date = datetime.strptime(chaine_date, "%d %B, %Y") print("L'objet date est : ", objet_date) print() # Exemple avec la date du jour reformatée puis reconvertie maintenant = datetime.now() d_str = maintenant.strftime("%d, %B, %Y") print("Chaîne reformatée : ", d_str) d = datetime.strptime(d_str, "%d, %B, %Y") print("Objet date reconverti : ", d)
Les directives %d, %B et %Y correspondent respectivement au jour, au nom complet du mois et à l'année sur quatre chiffres.
Par carabde | Mis à jour le 16 mai 2026