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 et heure-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-le aujourd'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, notredate 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 :

Heures, minutes et secondes

Pour convertir les secondes en minutes, heures et jours, vous pouvez utiliser le tableau suivant et diviser par le facteur de conversion correspondant.

Tableau de conversion du temps

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.