Retour au cours

datetime et time : dates, durées, fuseaux basiques

maîtriser le module datetime est essentiel pour tout programme qui gère le temps. python fournit aussi time pour des mesures simples.

objectifs

  • créer et formater des dates et heures
  • calculer des durées
  • gérer les fuseaux horaires de base
  • convertir timestamp ↔ datetime

explication détaillée

  • datetime.datetime.now() donne la date et l’heure locales
  • datetime.date.today() donne uniquement la date
  • datetime.timedelta représente une durée
  • datetime.strptime et strftime permettent de parser/formatter
  • time.time() retourne un timestamp (secondes depuis 1970-01-01 UTC)
  • fuseaux : zoneinfo.ZoneInfo depuis python 3.9

exemples exécutables

from datetime import datetime, timedelta, date
from zoneinfo import ZoneInfo

# date et heure actuelles
now = datetime.now()
print(now.strftime("%Y-%m-%d %H:%M:%S"))

# ajouter 5 jours
plus_5 = now + timedelta(days=5)
print(plus_5)

# différence entre 2 dates
d1 = date(2025, 1, 1)
d2 = date(2025, 8, 1)
print((d2 - d1).days, "jours")

# fuseau
paris = datetime.now(tz=ZoneInfo("Europe/Paris"))
ny = paris.astimezone(ZoneInfo("America/New_York"))
print("Paris:", paris)
print("NY:", ny)

# timestamp
ts = time.time()
print(datetime.fromtimestamp(ts))

bonnes pratiques

  • stocker en UTC, afficher dans le fuseau local
  • éviter les calculs manuels de dates (utiliser timedelta)
  • toujours préciser le fuseau si l’heure est critique

pièges courants

  • oublier que now() par défaut est naïf (pas de fuseau)
  • confondre mois/jours avec timedelta (pas de notion de mois)
  • erreurs de format dans strptime

exercices

  1. afficher la date dans 100 jours.
  2. calculer le nombre de jours depuis votre naissance.
  3. convertir un datetime paris en datetime new york.