Section courante

A propos

Section administrative du site

Date et heure

Le langage de programmation Python a un module nommé datetime pour travailler avec les dates et les heures.

Demander la date et l'heure actuelles

Voici un exemple d'un programme en Python 3 permettant d'afficher la date et l'heure actuelle :

  1. import datetime
  2.  
  3. objet_datetime = datetime.datetime.now()
  4. print(objet_datetime)

Lorsque vous exécutez le programme, la sortie retournera quelque chose comme ceci :

2021-02-06 10:27:31.913015

Dans ce programme, nous avons importé le module datetime à l'aide de l'instruction import datetime. L'une des classes définies dans le module datetime est la classe datetime. Nous avons ensuite utilisé la méthode now() pour créer un objet datetime contenant la date et l'heure locales actuelles.

Demande la date actuelle

Si on veut simplement demander la date sans leur en Python 3, on utilisera un programme ressemblant à ceci :

  1. import datetime
  2.  
  3. objet_date = datetime.date.today()
  4. print(objet_date)

Lorsque vous exécutez le programme, la sortie retournera quelque chose comme ceci :

2021-02-06

Dans ce programme, nous avons utilisé la méthode today() définie dans la classe date pour obtenir un objet date contenant la date locale actuelle.

L'intérieur de datetime

Vous pouvez utiliser la fonction dir() pour obtenir une liste contenant tous les attributs d'un module :

  1. import datetime
  2.  
  3. print(dir(datetime))

Lorsque vous exécutez le programme, la sortie retournera quelque chose comme ceci :

['MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'date', 'datetime', 'datetime_CAPI', 'sys', 'time', 'timedelta', 'timezone', 'tzinfo']

Les classes couramment utilisées dans le module datetime sont :

Classe datetime.date

Vous pouvez instancier des objets de date à partir de la classe de date. Un objet date représente une date (année, mois et jour).

Objet date pour représenter une date

L'exemple suivant permet de construire une date à partir d'un objet date :

  1. import datetime
  2.  
  3. madate = datetime.date(2021, 2, 6)
  4. print(madate)

Lorsque vous exécutez le programme, la sortie retournera quelque chose comme ceci :

2021-02-06

Si vous vous demandez, date() dans l'exemple ci-dessus est un constructeur de la classe date. Le constructeur prend trois paramètres : année, mois et jour. La variable madate est un objet date.

Nous ne pouvons importer la classe de date qu'à partir du module datetime. Voici comment :

  1. from datetime import date
  2.  
  3. madate = date(2021, 2, 6)
  4. print(madate)

Demande la date actuelle

Vous pouvez créer un objet de date contenant la date actuelle en utilisant une méthode de classe nommée today(). Voici comment :

  1. from datetime import date
  2.  
  3. aujourdhui = date.today()
  4.  
  5. print("Date actuelle =", aujourdhui)

Demande la date à partir d'un horodatage

Nous pouvons également créer des objets de date à partir d'un horodatage. Un horodatage Unix est le nombre de secondes entre une date particulière et le 1er janvier 1970 à UTC. Vous pouvez convertir un horodatage en date à l'aide de la méthode fromtimestamp() :

  1. from datetime import date
  2.  
  3. horodatage = date.fromtimestamp(1612629066)
  4. print("Date = ", horodatage)

Lorsque vous exécutez le programme, la sortie retournera quelque chose comme ceci :

Date = 2021-02-06

Afficher l'année, le mois et le jour d'aujourd'hui

Nous pouvons facilement obtenir l'année, le mois, le jour, le jour de la semaine,... à partir de l'objet de date. Voici comment :

  1. from datetime import date
  2.  
  3. aujourdhui = date.today() 
  4.  
  5. print("Année actuelle :", aujourdhui.year)
  6. print("Mois actuelle :", aujourdhui.month)
  7. print("Jour actuelle :", aujourdhui.day)

Lorsque vous exécutez le programme, la sortie retournera quelque chose comme ceci :

Année actuelle : 2021
Mois actuelle : 2
Jour actuelle : 6

datetime.time

Un objet time instancié à partir de la classe time contient une représentation de l'heure locale.

Objet time pour représenter l'heure

Voici des appels de la classe time avec un nombre différents de paramètres :

  1. from datetime import time
  2.  
  3. # time(heure = 0, minute = 0, seconde = 0)
  4. a = time()
  5. print("a =", a)
  6.  
  7. # time(heurre, minute, seconde)
  8. b = time(10, 37, 57)
  9. print("b =", b)
  10.  
  11. # time(heure, minute, seconde)
  12. c = time(hour = 10, minute = 37, second = 57)
  13. print("c =", c)
  14.  
  15. # time(heure, minute, seconde, microseconde)
  16. d = time(10, 37, 57, 123456)
  17. print("d =", d)

Lorsque vous exécutez le programme, la sortie retournera quelque chose comme ceci :

a = 00:00:00
b = 10:37:57
c = 10:37:57
d = 10:37:57.123456

Afficher l'heure, les minutes, les secondes et les microsecondes

Une fois que vous avez créé un objet de temps, vous pouvez facilement afficher ses attributs tels que l'heure, les minutes,... :

  1. from datetime import time
  2.  
  3. heure = time(10, 37, 57)
  4.  
  5. print("Heure = ", heure.hour)
  6. print("Minute = ", heure.minute)
  7. print("Seconde = ", heure.second)
  8. print("Microseconde = ", heure.microsecond)

Lorsque vous exécutez le programme, la sortie retournera quelque chose comme ceci :

Heure = 10
Minute = 37
Seconde = 57
Microseconde = 0

Notez que nous n'avons pas passé de paramètre en microseconde. Par conséquent, sa valeur par défaut 0 est affichée.

datetime.datetime

Le module datetime a une classe nommée datetime pouvant contenir des informations sur les objets de date et d'heure.

Objet datetime de Python

L'exemple montre l'utilisation de la classe datetime avec ou sans heure :

  1. from datetime import datetime
  2.  
  3. #datetime(annee, mois, jour)
  4. dateseulement = datetime(2021, 2, 6)
  5. print(dateseulement)
  6.  
  7. # datetime(annee, mois, jour, heure, minute, seconde, microseconde)
  8. dateetheure = datetime(2021, 2, 6, 23, 55, 59, 342380)
  9. print(dateetheure)

Lorsque vous exécutez le programme, la sortie retournera quelque chose comme ceci :

2021-02-06 00:00:00
2021-02-06 23:55:59.342380

Les trois premiers paramètres année, mois et jour dans le constructeur datetime() sont obligatoires.

Afficher l'année, le mois, l'heure, les minutes et l'horodatage

L'exemple suivant permet d'afficher l'année, le mois, l'heure, les minutes et l'horodatage :

  1. from datetime import datetime
  2.  
  3. temps = datetime(2021, 2, 6, 23, 55, 59, 342380)
  4. print("Année =", temps.year)
  5. print("Mois =", temps.month)
  6. print("Heure =", temps.hour)
  7. print("Minute =", temps.minute)
  8. print("Horodatage =", temps.timestamp())

Lorsque vous exécutez le programme, la sortie retournera quelque chose comme ceci :

Année = 2021
Mois = 2
Heure = 23
Minute = 55
Horodatage = 1612673759.34238

datetime.timedelta

Un objet timedelta représente la différence entre deux dates ou heures. L'exemple suivant permet d'afficher la différence entre deux objets timedelta :

  1. from datetime import timedelta
  2.  
  3. t1 = timedelta(weeks = 2, days = 5, hours = 1, seconds = 33)
  4. t2 = timedelta(days = 4, hours = 11, minutes = 4, seconds = 54)
  5. t3 = t1 - t2
  6.  
  7. print("t3 = ", t3)

Lorsque vous exécutez le programme, la sortie retournera quelque chose comme ceci :

t3 = 14 days, 13:55:39

Dans l'exemple précédent, nous avons créé deux objets timedelta nommé t1 et t2, et leur différence est affichée à l'écran.

L'exemple suivant permet d'afficher un objet timedelta négatif :

  1. from datetime import timedelta
  2.  
  3. t1 = timedelta(seconds = 37)
  4. t2 = timedelta(seconds = 57)
  5. t3 = t1 - t2
  6.  
  7. print("t3 = ", t3)
  8. print("t3 = ", abs(t3))

Lorsque vous exécutez le programme, la sortie retournera quelque chose comme ceci :

t3 = -1 day, 23:59:40
t3 = 0:00:20

Durée en secondes

Vous pouvez obtenir le nombre total de secondes dans un objet timedelta en utilisant la méthode total_seconds().

  1. from datetime import timedelta
  2.  
  3. t = timedelta(days = 6, hours = 2, seconds = 37, microseconds = 233423)
  4. print("Secondes total = ", t.total_seconds())

Lorsque vous exécutez le programme, la sortie retournera quelque chose comme ceci :

Secondes total = 525637.233423

Vous pouvez également trouver la somme de deux dates et heures en utilisant l'opérateur +. En outre, vous pouvez multiplier et diviser un objet timedelta par des entiers et des nombres à virgules flottantes (nombre réel).

datetime au format Python

La façon dont la date et l'heure sont représentées peut être différente selon les endroits, les organisations,... Il est plus courant d'utiliser mm/jj/aaaa aux États-Unis, alors que jj/mm/aaaa est plus courant au Royaume-Uni. Le Python a les méthodes strftime() et strptime() pour gérer ces situations.

strftime() de Python : Objet datetime en chaîne de caractères

La méthode strftime() est définie sous les classes date, datetime et time. La méthode crée une chaîne de caractères formatée à partir d'un objet date, datetime ou time donné.

  1. from datetime import datetime
  2.  
  3. # date et heure actuelle
  4. maintenant = datetime.now()
  5.  
  6. t = maintenant.strftime("%H:%M:%S")
  7. print("Heure :", t)
  8.  
  9. s1 = maintenant.strftime("%m/%d/%Y, %H:%M:%S")
  10. # Format mm/dd/AA H:M:S
  11. print("s1 : ", s1)
  12.  
  13. s2 = maintenant.strftime("%d/%m/%Y, %H:%M:%S")
  14. # Format dd/mm/AA H:M:S
  15. print("s2 : ", s2)

Lorsque vous exécutez le programme, la sortie retournera quelque chose comme ceci :

Heure : 15:21:37
s1 : 02/06/2021, 15:21:37
s2 : 06/02/2021, 15:21:37

Dans l'exemple précédent, %Y, %m, %d, %H ... sont des codes de format. La méthode strftime() prend un ou plusieurs codes de format et renvoie une chaîne de caractères formatée basée sur celui-ci. Dans le programme ci-dessus, t, s1 et s2 sont des chaînes de caractères dont voici la signification :

Code Description Intervalle
%Y Année [0001, ..., 2018, 2019, 2020, 2021,..., 9999]
%m Mois [01, 02, ..., 11, 12]
%d Jour [01, 02, ..., 30, 31]
%H Heure [00, 01, ..., 22, 23]
%M Minute [00, 01, ..., 58, 59]
%S Seconde [00, 01, ..., 58, 59]

strptime() de Python - chaîne à caractères datetime

La méthode strptime() crée un objet datetime à partir d'une chaîne de caractères donnée (représentant la date et l'heure).

  1. from datetime import datetime
  2.  
  3. chaine_date = "6 February, 2021"
  4. print("chaine_date =", chaine_date)
  5.  
  6. objet_date = datetime.strptime(chaine_date, "%d %B, %Y")
  7. print("objet_date =", objet_date)

Lorsque vous exécutez le programme, la sortie retournera quelque chose comme ceci :

chaine_date = 6 February, 2021
objet_date = 2021-02-06 00:00:00

La méthode strptime() prend deux paramètres :

Par ailleurs, les codes de format %d, %B et %Y sont utilisés respectivement pour le jour, le mois (nom complet) et l'année.

Gestion du fuseau horaire en Python

Supposons que vous travaillez sur un projet et que vous deviez afficher la date et l'heure en fonction de leur fuseau horaire. Plutôt que d'essayer de gérer vous-même le fuseau horaire, il existe le module tiers pytz de Stuart Bishop.



Dernière mise à jour : Samedi, le 6 février 2021