Lorsqu’on manipule des dates et des heures avec Python, il est fréquent de devoir déterminer l’écart temporel entre deux moments. Ce guide vous expliquera comment calculer cette différence, exprimée en heures, minutes et secondes.
À la fin de ce tutoriel, vous aurez acquis les compétences suivantes :
- Utiliser le module
datetime
de Python pour gérer les dates et les heures. - Comprendre ce que sont les objets
timedelta
et leur utilité. - Calculer l’écart temporel entre deux points dans le temps, en heures, minutes et secondes.
Commençons sans plus tarder.
Maîtriser le Module datetime
de Python
Pour interagir avec les dates et les heures en Python, vous utiliserez le module datetime
. Ce module est intégré à la bibliothèque standard de Python, il n’est donc pas nécessaire de l’installer, il suffit de l’importer :
import datetime
Pour calculer un écart temporel, il faut définir deux moments distincts. Ces moments peuvent être:
- Deux objets de type date.
- Deux objets de type heure.
- Une combinaison des deux, c’est-à-dire des objets de type
datetime
.
Création d’un Objet Date
Importons la classe date
du module datetime
. Pour créer un objet date, utilisez la syntaxe datetime.date(année, mois, jour)
. Par exemple, pour créer un objet date1
:
from datetime import date date1 = datetime.date(2022, 3, 27) print(date1) # Résultat : 2022-03-27
Vous pouvez expérimenter ce code sur un interpréteur Python en ligne ou localement après avoir installé Python.
Comme le montre l’exemple, l’affichage d’une date respecte le format AAAA-MM-JJ.
Important : Assurez-vous que le mois est spécifié sous forme d’entier, sans zéro non significatif. Par exemple, pour le mois de juin, utilisez ‘6’ et non ’06’.
Si vous utilisez ’03’ au lieu de ‘3’ pour le mois de mars, une erreur de syntaxe sera levée, comme le montre l’exemple ci-dessous :
date1 = datetime.date(2022, 03, 27) print(date1) # Message d'erreur : File "<ipython-input-12-6eb72084e6ce>", line 1 date1 = datetime.date(2022,03,27) ^ SyntaxError: invalid token
Voyons maintenant comment créer un objet de type heure.
Création d’un Objet Heure
Pour créer un objet heure, importons la classe time
. On peut créer un objet heure en utilisant la classe time
et en spécifiant les attributs heure, minute, seconde et microseconde.
Ces attributs sont optionnels. Si un attribut n’est pas spécifié, il prend la valeur 0 par défaut.
L’exemple suivant montre la création d’un objet time1
. Comme pour la date, l’objet heure sera formaté lors de l’affichage :
from datetime import time time1 = datetime.time(13, 27, 45, 4600) print(time1) # Résultat : 13:27:45.004600
Création d’un Objet Datetime
L’objet date ne contient pas d’information sur l’heure, et l’objet heure n’inclut pas la date. En pratique, il est souvent nécessaire d’avoir les deux informations. L’objet datetime
est donc à privilégier.
Voici comment accéder à la classe datetime
et créer des objets de ce type :
dt1 = datetime.datetime(2022, 3, 27, 13, 27, 45, 46000) print(dt1) # Résultat : 2022-03-27 13:27:45.046000
Créons maintenant un autre objet datetime
, dt2
, sans spécifier l’attribut seconde. On constate que la valeur par défaut (0) est utilisée :
dt2 = datetime.datetime(2022, 6, 30, 14, 28) print(dt2) # Résultat : 2022-06-30 14:28:00
Jusqu’à présent, nous avons vu comment créer des moments sous différentes formes. Il est temps d’apprendre à calculer la différence entre deux de ces moments.
La section suivante vous apportera les réponses.
L’Objet timedelta
de Python
En Python, timedelta
représente un laps de temps. Il s’agit de la différence entre deux objets date, heure ou datetime
.
L’addition ou la soustraction de deux objets date, heure ou datetime
a pour résultat un objet timedelta
. Cet objet possède des attributs et des méthodes qui facilitent le calcul des différences de temps.
Calculons par exemple la différence entre dt1
et dt2
:
dt1 = datetime.datetime(2022, 3, 27, 13, 27, 45, 46000) dt2 = datetime.datetime(2022, 6, 30, 14, 28) tdelta = dt2 - dt1 print(tdelta) print(type(tdelta)) # Résultat : 95 days, 1:00:14.954000 <class 'datetime.timedelta'>
On observe que la variable tdelta
contient la différence temporelle entre dt1
et dt2
. La fonction type()
confirme que le type de tdelta
est bien datetime.timedelta
.
Voyons un autre exemple plus concret.
Calcul d’un Écart Temporel entre Deux Dates
Prenons un exemple pratique et parlant.
Problématique : Calculer l’écart temporel entre la date actuelle et votre anniversaire.
Pour ce faire, définissons la date actuelle comme premier moment et votre date d’anniversaire comme second.
Créons deux objets datetime
:
- Un pour la date d’aujourd’hui, que nous nommerons
today
. - Un pour votre date d’anniversaire, que nous nommerons
bday
.
La méthode now()
de la classe datetime
retourne la date et l’heure locale actuelle. C’est cette fonction que nous allons utiliser pour définir la date de référence today
:
today = datetime.datetime.now() print(today) # Exemple de résultat : 2022-01-22 09:10:18.489538
Dans l’exemple ci-dessous, remplacez la variable bday
par votre date d’anniversaire pour calculer le temps restant avant celui-ci cette année.
Si votre anniversaire est déjà passé, vous pouvez modifier bday
pour l’année suivante.
bday = datetime.datetime(2022, 8, 30, 11, 59) print(bday) # Exemple de résultat : 2022-08-30 11:59:00
L’étape suivante consiste à calculer time_diff
, qui est un objet timedelta
. Il suffit de soustraire today
de bday
pour obtenir l’écart temporel :
time_diff = bday - today print(f"Votre anniversaire est dans {time_diff}") # Résultat Votre anniversaire est dans 220 days, 2:46:00.127416
Pour connaître le nombre de jours restants, utilisez l’attribut days
sur time_diff
:
tdays = time_diff.days print(f"Votre anniversaire est dans {tdays} jours.") # Résultat Votre anniversaire est dans 220 jours.
Calcul d’un Écart Temporel en Secondes
Calculons maintenant le temps restant jusqu’à votre anniversaire en secondes.
Pour obtenir la différence de temps totale en secondes, utilisez la méthode total_seconds()
sur l’objet timedelta
time_diff
:
tsecs = time_diff.total_seconds() print(f"Votre anniversaire est dans {tsecs} secondes.") # Résultat Votre anniversaire est dans 19017960.127416 secondes.
Voilà, l’attente est longue !
Vous savez maintenant comment calculer l’écart temporel entre deux moments en secondes.
Rappelons quelques bases : une journée compte 24 heures, une heure dure 60 minutes, et une minute est composée de 60 secondes.
Voici un résumé visuel :
Heures, minutes et secondes
Pour convertir les secondes en minutes, heures et jours, utilisez le tableau suivant et divisez par le facteur de conversion approprié.
Tableau de conversion du temps
Dans les sections suivantes, nous allons convertir l’écart temporel en secondes vers les minutes puis les heures.
Calcul de l’Écart Temporel en Minutes
Pour obtenir l’écart temporel en minutes, il suffit de diviser le nombre total de secondes par 60.
Divisons tsecs
par 60 et stockons le résultat dans une variable nommée tmins
:
tmins = tsecs/60 print(f"Votre anniversaire est dans {tmins} minutes.") # Résultat Votre anniversaire est dans 316966.0021236 minutes.
Calcul de l’Écart Temporel en Heures
Maintenant que vous connaissez l’écart en minutes, vous pouvez le diviser par 60 pour obtenir l’écart en heures. Ou, vous pouvez directement diviser le nombre total de secondes par 60*60 = 3600.
thrs = tsecs/(60*60) print(f"Votre anniversaire est dans {thrs} heures.") # Résultat Votre anniversaire est dans 5282.76670206 heures.
Vous savez maintenant comment calculer un écart temporel dans l’unité de votre choix.
Conclusion
Dans ce tutoriel, vous avez appris à :
- Créer et manipuler des dates et des heures à l’aide du module
datetime
de Python. - Utiliser les objets
timedelta
pour représenter un laps de temps. - Calculer l’écart temporel en secondes, minutes et heures.
J’espère que ce tutoriel vous a été utile. Vous maîtrisez désormais le calcul d’un écart temporel en Python. Il est temps de mettre vos compétences en pratique.
Bon apprentissage et bon code !
Apprenez à écrire du code « égal à » ou « différent de », ou encore à créer un jeu de serpent en Python ici.