Comment ajouter du temps dans Python datetime

PythonPythonBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Le module datetime de Python est un outil puissant pour travailler avec les dates et les heures. Ce tutoriel vous guidera à travers différentes méthodes d'ajout de temps aux objets datetime, vous aidant à effectuer des calculs de temps précis et flexibles en Python. Vous apprendrez à utiliser timedelta pour des additions simples et explorerez des exemples pratiques de manipulation du temps.

Comprendre les objets Datetime en Python

Avant d'ajouter du temps, il est important de comprendre les composants fondamentaux du module datetime.

Composants de base de Datetime

Le module datetime fournit plusieurs classes clés :

Classe Description
date Représente une date (année, mois, jour)
time Représente une heure (heure, minute, seconde)
datetime Combine la date et l'heure
timedelta Représente une durée de temps

Création d'objets Datetime

Vous pouvez créer des objets datetime de plusieurs manières. Créons un script Python simple pour voir comment.

Ouvrez le terminal intégré dans le WebIDE et accédez au répertoire du projet si ce n'est pas déjà fait.

cd ~/project

Créez un nouveau fichier nommé datetime_basics.py dans le répertoire ~/project à l'aide de l'explorateur de fichiers du WebIDE ou de la ligne de commande.

touch datetime_basics.py

Ouvrez datetime_basics.py dans l'éditeur WebIDE et ajoutez le code suivant :

from datetime import date, time, datetime

## Création d'un objet date
date_actuelle = date.today()
print(f"Date actuelle : {date_actuelle}")

## Création d'un objet time (à partir de la date et heure actuelle)
heure_actuelle = datetime.now().time()
print(f"Heure actuelle : {heure_actuelle}")

## Création d'un objet datetime
datetime_actuelle = datetime.now()
print(f"Date et heure actuelle : {datetime_actuelle}")

## Création d'un objet datetime spécifique
datetime_specifique = datetime(2023, 6, 15, 14, 30, 45)
print(f"Date et heure spécifique : {datetime_specifique}")

Enregistrez le fichier. Maintenant, exécutez le script à partir du terminal :

python datetime_basics.py

Vous verrez une sortie similaire à ceci :

Date actuelle : YYYY-MM-DD
Heure actuelle : HH:MM:SS.microsecondes
Date et heure actuelle : YYYY-MM-DD HH:MM:SS.microsecondes
Date et heure spécifique : 2023-06-15 14:30:45

Ceci montre comment créer des objets date, time et datetime de base.

Attributs clés de Datetime

Les objets datetime possèdent des attributs tels que year, month, day, hour, minute et second auxquels vous pouvez accéder.

Ajoutons à notre script datetime_basics.py pour démontrer l'accès à ces attributs.

Ouvrez à nouveau datetime_basics.py et ajoutez les lignes suivantes à la fin :

print(f"Année : {datetime_specifique.year}")
print(f"Mois : {datetime_specifique.month}")
print(f"Jour : {datetime_specifique.day}")
print(f"Heure : {datetime_specifique.hour}")
print(f"Minute : {datetime_specifique.minute}")
print(f"Seconde : {datetime_specifique.second}")

Enregistrez le fichier et exécutez-le à nouveau :

python datetime_basics.py

La sortie inclura maintenant les composants individuels de datetime_specifique :

Date actuelle : YYYY-MM-DD
Heure actuelle : HH:MM:SS.microsecondes
Date et heure actuelle : YYYY-MM-DD HH:MM:SS.microsecondes
Date et heure spécifique : 2023-06-15 14:30:45
Année : 2023
Mois : 6
Jour : 15
Heure : 14
Minute : 30
Seconde : 45

La compréhension de ces fondamentaux est la première étape pour effectuer des additions de temps.

Ajout de temps avec timedelta

La méthode la plus courante pour ajouter du temps à un objet datetime en Python est d'utiliser la classe timedelta. Un objet timedelta représente une durée.

Création d'objets timedelta

Vous pouvez créer des objets timedelta en utilisant différentes unités de temps comme days, hours, minutes, seconds, milliseconds et microseconds.

Créons un nouveau script Python pour explorer timedelta.

Créez un nouveau fichier nommé time_addition.py dans le répertoire ~/project.

touch time_addition.py

Ouvrez time_addition.py et ajoutez le code suivant :

from datetime import datetime, timedelta

## Obtention de la date et heure actuelle
datetime_actuelle = datetime.now()
print(f"Date et heure actuelle : {datetime_actuelle}")

## Création d'un timedelta de 5 jours
cinq_jours = timedelta(days=5)
print(f"Timedelta de 5 jours : {cinq_jours}")

## Création d'un timedelta de 3 heures et 30 minutes
trois_heures_trente_minutes = timedelta(hours=3, minutes=30)
print(f"Timedelta de 3 heures 30 minutes : {trois_heures_trente_minutes}")

## Création d'un timedelta d'une semaine et de 2 jours
une_semaine_deux_jours = timedelta(weeks=1, days=2)
print(f"Timedelta d'une semaine et 2 jours : {une_semaine_deux_jours}")

Enregistrez le fichier et exécutez-le :

python time_addition.py

La sortie affichera la date et heure actuelle et les objets timedelta créés :

Date et heure actuelle : YYYY-MM-DD HH:MM:SS.microsecondes
Timedelta de 5 jours : 5 jours, 0:00:00
Timedelta de 3 heures 30 minutes : 3:30:00
Timedelta d'une semaine et 2 jours : 9 jours, 0:00:00

Notez que timedelta(weeks=1, days=2) est représenté par 9 jours. timedelta normalise la durée en jours, secondes et microsecondes.

Ajout de timedelta à datetime

Vous pouvez ajouter un objet timedelta à un objet datetime pour obtenir un nouvel objet datetime représentant un point futur dans le temps.

Ajoutons du code à time_addition.py pour effectuer l'addition de temps.

Ouvrez time_addition.py et ajoutez les lignes suivantes à la fin :

## Ajout de 5 jours à la date et heure actuelle
datetime_futur_jours = datetime_actuelle + cinq_jours
print(f"Date et heure après ajout de 5 jours : {datetime_futur_jours}")

## Ajout de 3 heures et 30 minutes à la date et heure actuelle
datetime_futur_heures_minutes = datetime_actuelle + trois_heures_trente_minutes
print(f"Date et heure après ajout de 3 heures 30 minutes : {datetime_futur_heures_minutes}")

## Ajout d'une semaine et de 2 jours à la date et heure actuelle
datetime_futur_semaine_jours = datetime_actuelle + une_semaine_deux_jours
print(f"Date et heure après ajout d'une semaine et 2 jours : {datetime_futur_semaine_jours}")

Enregistrez le fichier et exécutez-le :

python time_addition.py

La sortie affichera maintenant la date et heure d'origine et les dates et heures résultantes après l'ajout des objets timedelta :

Date et heure actuelle : YYYY-MM-DD HH:MM:SS.microsecondes
Timedelta de 5 jours : 5 jours, 0:00:00
Timedelta de 3 heures 30 minutes : 3:30:00
Timedelta d'une semaine et 2 jours : 9 jours, 0:00:00
Date et heure après ajout de 5 jours : YYYY-MM-DD HH:MM:SS.microsecondes
Date et heure après ajout de 3 heures 30 minutes : YYYY-MM-DD HH:MM:SS.microsecondes
Date et heure après ajout d'une semaine et 2 jours : YYYY-MM-DD HH:MM:SS.microsecondes

La sortie affiche les nouvelles valeurs de date et heure après les additions. Ceci démontre l'utilisation de base de timedelta pour ajouter du temps.

Calculs pratiques de temps

timedelta est très utile pour les calculs pratiques de temps, tels que la recherche d'une date future ou le calcul de la durée entre deux points temporels.

Calcul de dates futures

Vous pouvez facilement calculer une date un certain nombre de jours, de semaines ou même d'années dans le futur (en convertissant les années en jours).

Ajoutons une fonction à time_addition.py pour calculer une date future.

Ouvrez time_addition.py et ajoutez la définition et l'utilisation de la fonction suivante à la fin :

def get_future_date(date_de_depart, jours_a_ajouter):
    """Calcule une date future en ajoutant un nombre de jours."""
    date_future = date_de_depart + timedelta(days=jours_a_ajouter)
    return date_future

## Exemple : Trouver la date de 30 jours à partir d'aujourd'hui
trente_jours_plus_tard = get_future_date(datetime.now(), 30)
print(f"Date de 30 jours à partir d'aujourd'hui : {trente_jours_plus_tard}")

Enregistrez le fichier et exécutez-le :

python time_addition.py

La sortie inclura désormais la date de 30 jours à partir de la date actuelle :

Date et heure actuelle : YYYY-MM-DD HH:MM:SS.microsecondes
Timedelta de 5 jours : 5 jours, 0:00:00
Timedelta de 3 heures 30 minutes : 3:30:00
Timedelta d'une semaine et 2 jours : 9 jours, 0:00:00
Date et heure après ajout de 5 jours : YYYY-MM-DD HH:MM:SS.microsecondes
Date et heure après ajout de 3 heures 30 minutes : YYYY-MM-DD HH:MM:SS.microsecondes
Date et heure après ajout d'une semaine et 2 jours : YYYY-MM-DD HH:MM:SS.microsecondes
Date de 30 jours à partir d'aujourd'hui : YYYY-MM-DD HH:MM:SS.microsecondes

Calcul des différences temporelles

Vous pouvez également soustraire un objet datetime d'un autre pour obtenir un objet timedelta représentant la durée entre eux.

Ajoutons du code à time_addition.py pour calculer la différence entre deux dates.

Ouvrez time_addition.py et ajoutez le code suivant à la fin :

## Calcul de la différence entre deux datetimes spécifiques
date1 = datetime(2023, 1, 1)
date2 = datetime(2023, 12, 31)

difference_temps = date2 - date1
print(f"Différence entre {date1} et {date2} : {difference_temps}")

## Accès aux composants de la différence timedelta
print(f"Différence en jours : {difference_temps.days}")
print(f"Différence en secondes totales : {difference_temps.total_seconds()}")

Enregistrez le fichier et exécutez-le :

python time_addition.py

La sortie affichera la différence entre les deux dates :

Date et heure actuelle : YYYY-MM-DD HH:MM:SS.microsecondes
Timedelta de 5 jours : 5 jours, 0:00:00
Timedelta de 3 heures 30 minutes : 3:30:00
Timedelta d'une semaine et 2 jours : 9 jours, 0:00:00
Date et heure après ajout de 5 jours : YYYY-MM-DD HH:MM:SS.microsecondes
Date et heure après ajout de 3 heures 30 minutes : YYYY-MM-DD HH:MM:SS.microsecondes
Date et heure après ajout d'une semaine et 2 jours : YYYY-MM-DD HH:MM:SS.microsecondes
Date de 30 jours à partir d'aujourd'hui : YYYY-MM-DD HH:MM:SS.microsecondes
Différence entre 2023-01-01 00:00:00 et 2023-12-31 00:00:00 : 364 jours, 0:00:00
Différence en jours : 364
Différence en secondes totales : 31449600.0

Ceci démontre comment timedelta est utilisé à la fois pour ajouter du temps et pour calculer la durée entre deux points temporels. Ce sont des opérations fondamentales pour de nombreuses applications basées sur le temps.

Résumé

Dans ce laboratoire, vous avez appris les bases du module datetime de Python, y compris la création d'objets date, time et datetime. Vous avez exploré comment utiliser la classe timedelta pour représenter des durées et comment ajouter des objets timedelta à des objets datetime pour effectuer des additions de temps. Vous avez également pratiqué des calculs de temps pratiques, tels que la recherche de dates futures et le calcul de la différence entre deux datetimes. Ces compétences sont essentielles pour gérer les opérations basées sur le temps dans vos programmes Python.