Manipulation des dates en Python

Manipulation des dates en Python

Cet article explique la manipulation des dates en Python.

YouTube Video

Manipulation des dates en Python

La manipulation des dates en Python utilise principalement le module datetime. Ce module fournit différentes classes et fonctions pour manipuler les dates et les heures.

Voici quelques exemples de manipulation basique des dates en utilisant le module datetime.

Obtenir la date et l'heure

Vous pouvez obtenir la date et l'heure actuelles comme suit. datetime.now() et datetime.today() renvoient presque le même résultat, mais il peut y avoir des différences dans la gestion des fuseaux horaires.

1from datetime import datetime
2
3# Get the current date and time
4now = datetime.now()
5print(f"Current date and time: {now}")
6
7# Get today's date only
8today = datetime.today()
9print(f"Today's date: {today.date()}")
  • Ce code récupère et affiche la date et l'heure actuelles, ainsi que seulement la date d'aujourd'hui.

Créer des dates et heures spécifiques

Vous pouvez créer une date et une heure spécifiques comme suit.

1from datetime import datetime
2
3# Create a specific date and time
4specific_date = datetime(2023, 11, 7, 10, 30, 45)
5print(f"Specified date and time: {specific_date}")
  • Ce code crée et affiche la date et l'heure spécifiées (7 novembre 2023, 10:30:45).

Formatage des dates

Le formatage de la date peut se faire comme suit.

1from datetime import datetime
2
3now = datetime.now()
4
5# Format the date
6formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
7print(f"Formatted date and time: {formatted_date}")
  • Ce code obtient la date et l'heure actuelles, les formate selon le format spécifié à l'aide de strftime, puis les affiche.

Chaînes de format de date

  • %Y : Année (4 chiffres)
  • %m : Mois (01 à 12)
  • %d : Jour (01 à 31)
  • %H : Heure (00 à 23)
  • %M : Minute (00 à 59)
  • %S : Seconde (00 à 59)

Analyse de chaînes de dates

Vous pouvez convertir une chaîne représentant une date en objet datetime.

1from datetime import datetime
2
3date_string = "2023-11-07 10:30:45"
4parsed_date = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
5print(f"Parsed date and time: {parsed_date}")
  • Ce code convertit une date représentée sous forme de chaîne en objet datetime grâce à strptime(), puis l'affiche.

Calcul des dates

L'arithmétique sur les dates peut être effectuée comme suit.

 1from datetime import datetime, timedelta
 2
 3now = datetime.now()
 4
 5# Date for one day later
 6tomorrow = now + timedelta(days=1)
 7print(f"Date for one day later: {tomorrow}")
 8
 9# Date for one week ago
10last_week = now - timedelta(weeks=1)
11print(f"Date for one week ago: {last_week}")
12
13# Time for two hours later
14in_two_hours = now + timedelta(hours=2)
15print(f"Time for two hours later: {in_two_hours}")
  • Ce code utilise timedelta pour ajouter ou soustraire des jours et des heures à la date et l'heure actuelles, en calculant et affichant la date et l'heure de demain, il y a une semaine, et dans deux heures.

Gestion des fuseaux horaires

Vous pouvez également gérer les fuseaux horaires avec le module datetime.

 1from datetime import datetime, timezone, timedelta
 2
 3# Current UTC time
 4utc_now = datetime.now(timezone.utc)
 5print(f"Current UTC time: {utc_now}")
 6
 7# JST (UTC+9)
 8jst = timezone(timedelta(hours=9))
 9jst_now = datetime.now(jst)
10print(f"Current JST time: {jst_now}")
  • Par défaut, datetime renvoie un 'datetime naïf' (sans information de fuseau horaire). Vous pouvez gérer explicitement les fuseaux horaires en utilisant la classe timezone ou zoneinfo.

La classe date et la classe time

Avec le module datetime, vous pouvez aussi manipuler uniquement des dates ou uniquement des heures.

1from datetime import date, time
2
3d = date(2023, 11, 7)
4t = time(10, 30, 45)
5
6print(f"Date only: {d}")
7print(f"Time only: {t}")
  • La classe date ne gère que les dates, et la classe time ne gère que les heures.

Conversion entre datetime et timestamp

La conversion entre les timestamps UNIX et les objets datetime est possible. Ici, un timestamp UNIX fait référence au nombre de secondes écoulées depuis le 1er janvier 1970.

 1from datetime import datetime
 2
 3now = datetime.now()
 4
 5# datetime → timestamp
 6timestamp = now.timestamp()
 7print(f"Timestamp: {timestamp}")
 8
 9# timestamp → datetime
10restored = datetime.fromtimestamp(timestamp)
11print(f"Restored datetime: {restored}")
  • Ce code convertit la date et l'heure actuelles en un timestamp UNIX, puis utilise la fonction fromtimestamp() pour convertir ce timestamp en objet datetime.

Pièges courants

Lorsque vous utilisez le module datetime, vous devez faire attention aux points suivants.

  • datetime.now() ne prend pas en compte les fuseaux horaires, donc pour l'internationalisation, vous devez explicitement utiliser timezone.utc.
  • Faites attention à ne pas confondre %m (mois) et %M (minute) dans les chaînes de format.

Résumé

Le module datetime propose également de nombreuses autres fonctionnalités pour une manipulation flexible des dates et des heures. De plus, des classes comme date, time, et timedelta sont disponibles, spécialisées pour des opérations spécifiques.

L'utilisation d'autres bibliothèques permet également une manipulation des dates plus avancée. Par exemple, pandas est spécialisé dans le traitement des séries chronologiques, tandis que dateutil est adapté à l'analyse complexe des dates. De plus, la bibliothèque arrow est également utile.

Vous pouvez suivre l'article ci-dessus avec Visual Studio Code sur notre chaîne YouTube. Veuillez également consulter la chaîne YouTube.

YouTube Video