9.1 Travailler avec la date et l'heure
Les programmeurs doivent très souvent manipuler des dates et des heures dans leurs programmes. Il n'y a donc rien d'étonnant à ce que Python dispose de deux bibliothèques standard datetime
et time
.
La bibliothèque datetime
fait partie de la bibliothèque standard de Python et fournit des classes pour travailler avec les dates et les heures. Elle permet de créer, manipuler et formater des dates et des heures, ainsi que d'effectuer des opérations arithmétiques avec elles.
Les principales classes de la bibliothèque datetime
La classe datetime.date
Cette classe représente une date (année, mois, jour) sans temps. Elle est utile pour travailler avec les dates calendaires.
Exemple d'utilisation :
import datetime
# Création d'un objet date
d = datetime.date(2023, 5, 24)
print(d) # Résultat : 2023-05-24
# Obtention de la date actuelle
today = datetime.date.today()
print(today)
# Accès aux attributs année, mois et jour
print(d.year) # Résultat : 2023
print(d.month) # Résultat : 5
print(d.day) # Résultat : 24
La classe datetime.time
Cette classe représente le temps (heures, minutes, secondes, microsecondes) sans date. Elle est utile pour travailler avec l'heure de la journée.
Exemple d'utilisation :
import datetime
# Création d'un objet temps
t = datetime.time(14, 30, 45)
print(t) # Résultat : 14:30:45
# Accès aux attributs heures, minutes et secondes
print(t.hour) # Résultat : 14
print(t.minute) # Résultat : 30
print(t.second) # Résultat : 45
La classe datetime.datetime
Cette classe combine la date et le temps (année, mois, jour, heures, minutes, secondes, microsecondes). Elle est utile pour travailler avec des moments spécifiques dans le temps.
Exemple d'utilisation :
import datetime
# Création d'un objet date et temps
dt = datetime.datetime(2023, 5, 24, 14, 30, 45)
print(dt) # Résultat : 2023-05-24 14:30:45
# Obtention de la date et l'heure actuelles
now = datetime.datetime.now()
print(now)
# Accès aux attributs date et temps
print(dt.year) # Résultat : 2023
print(dt.month) # Résultat : 5
print(dt.day) # Résultat : 24
print(dt.hour) # Résultat : 14
print(dt.minute) # Résultat : 30
print(dt.second) # Résultat : 45
La classe datetime.timedelta
Cette classe représente la différence entre deux moments dans le temps, exprimée en jours, secondes et microsecondes. Elle est utile pour effectuer des opérations arithmétiques avec les dates et les heures.
Exemple d'utilisation :
import datetime
# Création d'un objet timedelta
delta = datetime.timedelta(days=10, hours=5, minutes=30)
print(delta) # Résultat : 10 days, 5:30:00
# Ajout de timedelta à une date
dt = datetime.datetime(2023, 5, 24, 14, 30)
new_dt = dt + delta
print(new_dt) # Résultat : 2023-06-03 20:00:00
# Soustraction de timedelta d'une date
earlier_dt = dt - delta
print(earlier_dt) # Résultat : 2023-05-14 09:00:00
4.2 Formatage et parsing des dates et heures
Il nous est souvent nécessaire de non seulement travailler avec des dates, mais également de les transformer en une chaîne d'un certain format. Le processus inverse, lorsque nous transformons une chaîne en un objet, est généralement appelé parsing. Pour ces opérations aussi, Python propose ses propres classes et méthodes :
Méthode strftime()
La méthode strftime()
est utilisée pour formater des objets datetime
en chaîne selon un format spécifié.
Exemple d'utilisation :
import datetime
dt = datetime.datetime(2023, 5, 24, 14, 30, 45)
# Formatage de la date et l'heure
formatted_dt = dt.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_dt) # Résultat : 2023-05-24 14:30:45
# Formatage de la date uniquement
formatted_date = dt.strftime("%d-%m-%Y")
print(formatted_date) # Résultat : 24-05-2023
# Formatage de l'heure uniquement
formatted_time = dt.strftime("%H:%M:%S")
print(formatted_time) # Résultat : 14:30:45
Méthode strptime()
La méthode strptime()
est utilisée pour analyser des chaînes en objets datetime
selon un format spécifié.
Exemple d'utilisation :
import datetime
# Parsing d'une chaîne en un objet datetime
date_str = "24-05-2023 14:30:45"
dt = datetime.datetime.strptime(date_str, "%d-%m-%Y %H:%M:%S")
print(dt) # Résultat : 2023-05-24 14:30:45
# Parsing d'une chaîne en un objet date
date_str = "24-05-2023"
d = datetime.datetime.strptime(date_str, "%d-%m-%Y").date()
print(d) # Résultat : 2023-05-24
# Parsing d'une chaîne en un objet time
time_str = "14:30:45"
t = datetime.datetime.strptime(time_str, "%H:%M:%S").time()
print(t) # Résultat : 14:30:45
4.3 Travailler avec les fuseaux horaires
En pratique, les utilisateurs de nos services viennent du monde entier et, malheureusement, ils vivent dans différents pays avec des fuseaux horaires (timezone
) différents. En tant que programmeur, tu dois donc être capable de travailler avec eux aussi.
Et bien sûr, en Python, il y a une classe pour ça aussi :
La classe timezone
La classe timezone
du module datetime
permet de travailler avec les fuseaux horaires.
import datetime
# Création d'un objet datetime avec le fuseau horaire UTC
utc_dt = datetime.datetime(2023, 5, 24, 14, 30, 45, tzinfo=datetime.timezone.utc)
print(utc_dt) # Résultat : 2023-05-24 14:30:45+00:00
# Conversion dans un autre fuseau horaire
tokyo_tz = datetime.timezone(datetime.timedelta(hours=9))
tokyo_dt = utc_dt.astimezone(tokyo_tz)
print(tokyo_dt) # Résultat : 2023-05-24 23:30:45+09:00
Nous avons abordé la bibliothèque datetime
de manière très générale, voire superficielle. Nous y reviendrons plus tard pour apprendre à l'utiliser pour des tâches plus spécifiques. Pour l'instant, je voulais simplement vous la faire découvrir et élargir, pour ainsi dire, votre regard sur l'ensemble des bibliothèques standard.
Pour toute bibliothèque, vous devez d'abord savoir qu'elle existe et avoir une idée de ce que vous pouvez faire avec elle. Vous pouvez toujours consulter la documentation officielle pour une liste des fonctions, de leurs paramètres et de toutes leurs fonctionnalités.
GO TO FULL VERSION