Objectifs
- Gérer les dates et heures en python
Présentation
- Une date en Python n'est pas un type de données en soi, mais nous pouvons importer un module nommé
datetimepour travailler avec les dates en tant qu'objets de date. Datetimeest un module qui permet de manipuler des dates et des durées sous forme d’objets.- On manipule l’objet pour faire des calculs, et quand on a besoin de l’afficher, on formate l’objet en chaîne de caractères.
- Le module
datetimepropose plusieurs classes pour représenter des dates et heures. - Le module
datetimefournit un certain nombre de types permettant de traiter les dates, les heures et les intervalles de temps. - Le module
datetimefournit une classe datetime qui permet de faire des opérations et des comparaisons sur les dates et les heures.
import datetime laDate = datetime.datetime.now() print(laDate) 2019-05-06 17:43:11.735685- On peut créer artificiellement un objet
datetime, ses paramètres sont:datetime(année, mois, jour, heure, minute, seconde, microseconde, fuseau horaire)- Mais seuls "année", "mois" et "jour" sont obligatoires.
- Une date en Python n'est pas un type de données en soi, mais nous pouvons importer un module nommé
Date de sortie
- L'exécution du code de l'exemple ci-dessus, nous donne:
- 2019-05-06 17:47:20.617744
- La date contient l'année, le mois, le jour, l'heure, la minute, la seconde et la microseconde.
- Le module datetime dispose de nombreuses méthodes pour renvoyer des informations sur l'objet date.
Les types de classe datetime
datetimecomplète le moduletimeen fournissant des objets de plus haut niveau,soit :
classe datetime.date
- La date Python est une date naïve idéalisée par rapport au calendrier grégorien actuel. Ces attributs: année, mois et jour.
classe datetime.datetime
- Un objet datetime représente une date et l'heure, delon le calendrier Gregorian..
classe datetime.time
- Un objet time représente le temps (time), à l'exception de la date (date).
- Le temps Python est un temps idéalisé, indépendant de tout jour particulier. Ici, nous supposons que chaque jour est constitué d’exactement 24 * 60 * 60 secondes (pas de secondes intercalaires).Ces attributs: heure, minute, seconde, microseconde et tzinfo.
classe datetime.timedelta
- Un timedelta est une durée exprimant la différence entre deux instances de date, heure ou date / heure en résolution en microsecondes.
- La classe
timedeltasert à représenter une durée. - Les instances de cette classe supportent entre elles l’addition, la soustraction, le changement de signe et l’opérateur abs(), et peuvent être utilisées dans des opérations avec les classes time, date et datetime.
classe datetime.tzinfo
- Le tzinfo est une classe abstraite de base (base abstract class) pour les objets d'information de fuseau horaire (timezone).
classe datetime.timezone
- Un timezone implémente la classe de base abstraite
tzinfoen tant que décalage fixe par rapport à l'UTC.
- Un timezone implémente la classe de base abstraite
Opérations sur les dates en Python
- L’objet
datetimeautorise les soustractions et les comparaisons entre deux dates. - Une soustraction retourne un objet de type
timedeltaqui correspond à une durée qu’on peut multiplier par un réel ou ajouter à un objet de même type ou à un objet de typedatetime. - L’utilisation de ce type d’objet évite de se pencher sur tous les problèmes de conversion.
- La classe
timedeltasert à représenter une durée.- Les instances de cette classe supportent entre elles l’addition, la soustraction, le changement de signe et l’opérateur
abs(), et peuvent être utilisées dans des opérations avec les classes time, date et datetime.
- Les instances de cette classe supportent entre elles l’addition, la soustraction, le changement de signe et l’opérateur
- En plus de pouvoir récupérer la date du jour, on peut calculer la différence entre deux dates. Par exemple, combien de temps y a-t-il entre aujourd'hui et le premier jour de l'année 2010 ?
# 1- importer les modules de date, time, datetime from datetime import date, time, datetime duree = datetime.now() - datetime(2010, 1, 1) print(duree) # ce qui donne : 3883 days, 15:19:44.088885
timedeltadatetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)La fonction datetime.timedelta()
- La fonction Python
datetime.timedelta()est présente sous la bibliothèque datetime qui est généralement utilisée pour calculer les différences de dates et peut également être utilisée pour les manipulations de date en Python. C'est l'un des moyens les plus simples d'effectuer des manipulations de date. - Syntaxe:
datetime.timedelta (jours = 0, secondes = 0, microsecondes = 0, millisecondes = 0, minutes = 0, heures = 0, semaines = 0)Renvoie: Date - Exemple: Ajout/différence 2ans ,2mois et 2 jours à la date actuelle
# 1- importer les modules de date, time, datetime
from datetime import datetime, timedelta
# Utiliser datetime
maintenant = datetime.now()
# Afficher la date courante
print ("Maintenant est : ", str(maintenant))
# Calculer les future dates
# Ajout de deux ans
prochaine_date_apres_2ans = maintenant + timedelta(days = 730)
# Ajout de deux mois
prochaine_date_apres_2mois = maintenant + timedelta(days = 61)
# Ajout de deux jours
prochaine_date_apres_2jours = maintenant + timedelta(days = 2)
# Calculer les dates antérieures
# Avant deux ans
anterieure_date_avant_2ans = maintenant - timedelta(days = 730)
# Avant deux mois
anterieure_date_avant_2mois = maintenant - timedelta(days = 61)
# Avant deux jours
anterieure_date_avant_2jours = maintenant - timedelta(days = 2)
# printing calculated future_dates
print('Prochaine date après 2 ans sera :', str(prochaine_date_apres_2ans))
print('Prochaine date après 2 mois sera :', str(prochaine_date_apres_2mois))
print('Prochaine date après 2 jours sera :', str(prochaine_date_apres_2jours))
print('Anterieure_date_avant 2 ans sera :', str(anterieure_date_avant_2ans))
print('Anterieure_date_avant 2 mois sera :', str(anterieure_date_avant_2mois))
print('Anterieure_date_avant 2 jours sera :', str(anterieure_date_avant_2jours))
timedelta Python avec date et heuretimedelta prend également en charge l'addition et la soustraction avec l'objet date. # 1- importer les modules de date, time, datetime
from datetime import datetime, timedelta
current_datetime = datetime.now()
dt = current_datetime.date()
print('Date courant :', dt)
dt_tomorrow = dt + timedelta(days=1)
print('Date de demain:', dt_tomorrow)
L'objettimedeltaPython est très utile pour les manipulationsdatetime. La prise en charge des opérateurs arithmétiques de base le rend très facile à utiliser.
Applications
- Ecrivez un programme Python pour obtenir les informations de date et l'heure actuelles.
Sortieimport time import datetime print() print("Temps en secondes depuis l'époque: %s" %time.time()) print("Date et heure actuelles: " , datetime.datetime.now()) print("Autre date et heure: " ,datetime.datetime.now().strftime("%y-%m-%d-%H-%M")) print("Année en cours: ", datetime.date.today().strftime("%Y")) print("Mois de l'année en cours: ", datetime.date.today().strftime("%B")) print("Numéro de semaine de l'année en cours: ", datetime.date.today().strftime("%W")) print("Jour de la semaine: ", datetime.date.today().strftime("%w")) print("Jour de l'année: ", datetime.date.today().strftime("%j")) print("Jour du mois : ", datetime.date.today().strftime("%d")) print("Jour de la semaine: ", datetime.date.today().strftime("%A")) print()Temps en secondes depuis l'époque: 1557215777.4772093 Date et heure actuelles: 2019-05-07 08:56:17.485209 Autre date et heure: 19-05-07-08-56 Année en cours: 2019 Mois de l'année en cours: May Numéro de semaine de l'année en cours: 18 Jour de la semaine: 2 Jour de l'année: 127 Jour du mois : 07 Jour de la semaine: Tuesday
import datetime
naissance = datetime.datetime(2011, 10, 23, 10, 0, 0)
jour = naissance.now() # obtient l'heure et la date actuelle
print(jour) # affiche quelque chose comme 2019-05-07 17:59:36.312000
age = jour - naissance # calcule une différence
print(age)Sortie
2019-05-07 18:01:02.954453
2753 days, 8:01:02.954453
- a) Date et heure actuelles
- b) Année courante
- c) Mois de l'année
- d) Numéro de la semaine de l'année
- e) Jour de la semaine
- f) Jour de l'année
- g) Jour du mois
- h) Jour de la semaine
import time
import datetime
print("Date et heure actuelles: " , datetime.datetime.now())
print("Année actuelle: ", datetime.date.today().strftime("%Y"))
print("Mois de l'année: ", datetime.date.today().strftime("%B"))
print("Numéro de semaine de l'année: ", datetime.date.today().strftime("%W"))
print("Jour de la semaine: ", datetime.date.today().strftime("%w"))
print("Jour de l'année : ", datetime.date.today().strftime("%j"))
print("Jour du mois : ", datetime.date.today().strftime("%d"))
print("Jour de la semaine: ", datetime.date.today().strftime("%A"))
17-09-2020 24-09-2020 01-10-2020 08-10-2020 15-10-2020 22-10-2020 29-10-2020 05-11-2020 12-11-2020 19-11-2020
import datetime
today = datetime.datetime.today()
for w in range(10):
day = today + datetime.timedelta(weeks=w)
print(day.strftime("%d-%m-%Y"))