Lorsque vous travaillez avec des dates et des heures en Python, vous avez souvent besoin de calculer la différence de temps. Dans ce tutoriel, vous apprendrez à calculer la différence entre deux dates en heures, minutes et secondes.
À la fin de ce tutoriel, vous aurez appris :
- comment utiliser le module
datetime de
Python pour travailler avec les dates et le temps, - ce que sont les objets
timedelta
, et comment ils sont utiles, et - à calculer la différence de temps entre deux timestamps, en heures, minutes et secondes.
Commençons par le commencement.
Comment utiliser le module datetime de Python ?
Pour travailler avec des dates et des heures en Python, vous utiliserez le module datetime
. Le module datetime
fait partie de la bibliothèque standard de Python. Vous pouvez donc l’importer immédiatement dans votre environnement de travail, comme ceci :
import datetime
Pour calculer la différence de temps, vous devez créer deux horodatages différents. Vous pouvez choisir de créer :
- deux objets
date
, - deux objets de
temps
, ou - une combinaison des deux objets
date
etheure-date
.
Comment créer un objet date en Python ?
Importons la classe date
du module datetime. Pour créer un objet date en Python, vous pouvez utiliser la syntaxe générale datetime.date(,,)
. Voici un exemple de création d’un objet date
date1
:
from datetime import date
date1 = datetime.date(2022,3,27)
print(date1)
# Sortie : 2022-03-27
Vous pouvez essayer le code sur le compilateur Python de Geekflare pour le tester. Ou installez Python sur votre ordinateur.
Comme indiqué ci-dessus, lorsque vous imprimez la date, elle est formatée au format AAAA-MM-JJ
pour les dates.
Remarque: veillez à spécifier le mois sous la forme d’un nombre entier sans zéros en tête. Il est probable que vous ayez l’habitude d’ajouter un zéro au mois lorsque vous écrivez des dates.
Par exemple, pour spécifier une date en juin, le 6e mois de l’année, utilisez 6 et non 06.
Par exemple, essayez d’exécuter l’extrait de code suivant – où le mois est mentionné comme 03
au lieu de 3
. Vous verrez qu’une erreur de syntaxe est générée, comme indiqué :
date1 = datetime.date(2022,03,27)
print(date1)
# Message d'erreur
Fichier "", ligne 1
date1 = datetime.date(2022,03,27)
^
SyntaxError : invalid token
Voyons maintenant comment créer un objet temps
en Python.
Comment créer un objet temps en Python
Pour créer un objet temps, importons la classe time
. Tout objet temporel Python peut être créé à l’aide de la classe time
en spécifiant les attributs de classe suivants : heure
, minute
, seconde
et microseconde
.
Cependant, tous ces attributs sont facultatifs. Si vous ne spécifiez pas un certain attribut, par exemple la seconde
, il est fixé à 0
par défaut.
L’extrait de code suivant montre comment vous pouvez créer un objet time time1
. Comme pour l’objet date
, vous pouvez imprimer l’objet time
pour voir l’heure formatée.
from datetime import time
time1 = datetime.time(13,27,45,4600)
print(time1)
# Sortie : 13:27:45.004600
Comment créer un objet datetime en Python
Comme vous pouvez le voir, l’objet date
ne contient aucune information sur l’heure. Et l’objet time
ne contient aucune information sur la date.
Cependant, dans la pratique, vous aurez besoin à la fois des informations sur la date et sur l’heure. Il est donc recommandé d’utiliser la classe datetime
.
Vous pouvez accéder à la classe datetime
et créer des objets datetime
en Python, comme indiqué ci-dessous :
dt1 = datetime.datetime(2022,3,27,13,27,45,46000)
print(dt1)
# Sortie : 2022-03-27 13:27:45.046000
Créons maintenant un autre objet datetime dt2
sans le second
attribut. Vous pouvez voir qu’il est fixé à 0
– la valeur par défaut.
dt2 = datetime.datetime(2022,6,30,14,28)
print(dt2)
# Sortie : 2022-06-30 14:28:00
Jusqu’à présent, vous avez appris à créer des horodatages en Python, sous forme de dates, d’heures et d’heures-dates. Il est maintenant temps de voir comment vous pouvez calculer la différence entre deux dates.
Rendez-vous dans la section suivante pour le découvrir.
Comment utiliser l’objet timedelta en Python
En Python, timedelta
désigne un intervalle de temps. Il s’agit de la différence entre deux objets date
, heure
ou datetime
.
Si vous additionnez ou soustrayez deux objets date
, heure
ou datetime
, vous obtiendrez un objet timedelta
. Cet objet timedelta
possède des attributs et des méthodes utiles pour calculer la différence de temps.
Calculons la différence entre les deux objets datetime
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))
# Sortie
95 jours, 1:00:14.954000
<class 'datetime.timedelta'>
Dans l’extrait de code ci-dessus, vous pouvez voir que la variable tdelta
contient la différence de temps entre dt1
et dt2
. Le type de tdelta
est vérifié comme étant de la classe timedelta
à l’aide de la fonction intégrée type()
de Python.
Codons maintenant un autre exemple.
Comment trouver la différence de temps entre deux dates
Prenons un exemple simple mais intéressant.
Problème: calculer la différence de temps entre la date actuelle (aujourd’hui) et votre anniversaire.
Pour ce faire, définissez la date d’aujourd’hui comme premier horodatage et votre anniversaire comme deuxième horodatage.
Pour commencer, créons deux objets datetime
:
- un pour aujourd’hui, appelons-le
aujourd'hui
, et un autre pour votre anniversaire, appelons-leaujourd'hui
- un autre pour votre anniversaire, que nous appellerons
bday
La classe datetime
possède la méthode now()
qui vous donne la date et l’heure locales actuelles. Utilisons-la pour obtenir la date d’aujourd'hui, notre
date de référence.
today = datetime.datetime.now()
print(today)
# Exemple de sortie : 2022-01-22 09:10:18.489538
Dans le code ci-dessous, remplacez bday
par votre date d’anniversaire pour calculer le temps restant avant votre anniversaire cette année.
Si vous lisez ceci après que votre anniversaire soit passé, n’hésitez pas à remplacer bday
par votre prochain anniversaire.
bday = datetime.datetime(2022,8,30,11,59)
print(bday)
# Exemple de sortie : 2022-08-30 11:59:00
L’étape suivante consiste à calculer time_diff
, qui est un objet timedleta
, comme expliqué précédemment. Soustrayez simplement today
de votre bday
, et vous obtiendrez le décalage horaire.
time_diff = bday - today
print(f "Votre anniversaire est dans {time_diff}")
# Sortie
Votre anniversaire est dans 220 jours, 2:46:00.127416
Pour connaître le nombre de jours restants, utilisez l’attribut days de time_diff
, comme indiqué :
tdays = time_diff.days
print(f "Votre anniversaire est dans {tdays} jours.")
# Sortie
Votre anniversaire est dans 220 jours.
Comment trouver la différence de temps en secondes
Calculons maintenant le nombre de secondes qui nous séparent de votre anniversaire.
Pour calculer la différence de temps totale en secondes, utilisez la méthode total_seconds()
de l’objet timedelta
time_diff
.
tsecs = time_diff.total_seconds()
print(f "Votre anniversaire est dans {tsecs} secondes.")
# Sortie
Votre anniversaire est dans 19017960.127416 secondes.
Eh bien, l’attente est trop longue !
Cela dit, vous savez maintenant comment calculer la différence de temps entre deux dates quelconques en secondes.
Reprenons maintenant quelques bases et écrivons ce qui suit. Une journée est composée de 24 heures, une heure dure 60 minutes et 60 secondes constituent une minute.
Ceci est résumé dans l’image ci-dessous :
Pour convertir les secondes en minutes, heures et jours, vous pouvez utiliser le tableau suivant et diviser par le facteur de conversion correspondant.
Dans les sections suivantes, nous allons convertir le décalage horaire en secondes en minutes et en heures.
Comment calculer le décalage horaire en minutes
Pour obtenir le décalage horaire en minutes, il suffit de diviser le total des secondes par 60.
Divisons tsecs
par 60 et stockons le résultat dans une variable appelée tmins
, comme suit :
tmins = tsecs/60
print(f "Votre anniversaire est dans {tmins} minutes.")
# Sortie
Votre anniversaire est dans 316966.0021236 minutes.
Comment calculer le décalage horaire en heures
Maintenant que vous avez calculé la différence de temps en minutes, vous pouvez la diviser par un facteur de 60 pour obtenir la différence en heures. Vous pouvez également diviser le nombre total de secondes par 60*60 = 3600.
thrs = tsecs/(60*60)
print(f "Votre anniversaire est dans {thrs} heures.")
# Sortie
Votre anniversaire est dans 5282.76670206 heures.
Vous avez donc appris à calculer le décalage horaire dans l’unité de votre choix.
Conclusion
Dans ce tutoriel, vous avez appris à :
- créer et travailler avec des dates et des heures en utilisant le module
datetime de
Python, - utiliser les objets
timedelta
pour obtenir un intervalle de temps, ou une différence de temps, et - calculer la différence de temps en secondes, minutes et heures.
Nous espérons que ce tutoriel vous a été utile. Maintenant que vous savez tout sur le calcul de la différence de temps en Python, il est temps de mettre vos compétences en pratique.
Bon apprentissage et bon codage !
Apprenez à écrire un code égal à ou différent de ou à créer un jeu de serpent en Python ici.