Le module datetime en python

Le module datetime en python

  1. Objectifs

    • Gérer les dates et heures en python
  2. Présentation

    • Une date en Python n’est pas un type de données en soi, mais nous pouvons importer un module nommé datetime pour travailler avec les dates en tant qu’objets de date.
    • Datetime est 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 datetime propose plusieurs classes pour représenter des dates et heures.
    • Le module datetime fournit un certain nombre de types permettant de traiter les dates, les heures et les intervalles de temps.
    • Le module datetime fournit 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.



  3. 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.
  4. Les types de classe datetime

      • datetime complète le module time en fournissant des objets de plus haut niveau,soit :
    1. 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.
    2. classe datetime.datetime
      • Un objet datetime représente une date et l’heure, delon le calendrier Gregorian..
    3. 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.
    4. 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 timedelta sert à 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.
    5. classe datetime.tzinfo
      • Le tzinfo est une classe abstraite de base (base abstract class) pour les objets d’information de fuseau horaire (timezone).
    6. classe datetime.timezone
      • Un timezone implémente la classe de base abstraite tzinfo en tant que décalage fixe par rapport à l’UTC.
  5. Opérations sur les dates en Python

    • L’objet datetime autorise les soustractions et les comparaisons entre deux dates.
    • Une soustraction retourne un objet de type timedelta qui correspond à une durée qu’on peut multiplier par un réel ou ajouter à un objet de même type ou à un objet de type datetime.
    • L’utilisation de ce type d’objet évite de se pencher sur tous les problèmes de conversion.
    • La classe timedelta sert à 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.
    • 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
    • Le résultat est de type timedelta
    • datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
  6. 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 heure
    • timedelta 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’objet timedelta Python est très utile pour les manipulations datetime. La prise en charge des opérateurs arithmétiques de base le rend très facile à utiliser.

  7. Applications

    • Ecrivez un programme Python pour obtenir les informations de date et l’heure actuelles.
      • import 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()

        Sortie

        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
    • Ecrivez un programme Python qui calcule l’âge d’une personne née le 23 Octobre 2011.
      • 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
    • Écrivez un script Python pour afficher les différents formats de date et d’heure.
      • 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"))
    • Écrivez un script Python pour afficher dix dates, chacune d’eux par semaine, le début de chaque semaine commence à partir d’aujourd’hui, sous la forme JJ-MM-AAAA.
    • Exemple: Si Aujourd’hui est 17-09-2020 on aura comme résultat:

      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"))