OUJOOD.COM
Python datetime
Python dispose d'un module nommé datetime pour travailler avec les dates et les heures. Créons quelques programmes simples liés à la date et à l'heure avant de les approfondir plus en détail.Avant d'aller plus loin sachez que pour travailler avec les dates et heures, vous devez importer le module datetime.
import datetime ou import datetime as dte
Exemple 1 : Obtenir la date et l'heure actuelles
# main.py import datetime objet_datetime = datetime.datetime.now() print(objet_datetime)Lorsque vous exécutez le programme, la sortie sera quelque chose comme suit, mais avec la date et le temps courant au moment de l'exécution du programe :
2020-12-19 20:26:03.478039
Comment ça fonctionne?
1, Nous avons importé le module datetime à l'aide de l'instruction import datetime.
2, Nous avons fait appele à l'une des classes définies dans le module datetime, qui est la classe datetime. 3, Nous avons ensuite utilisé la méthode now() de la classe datetime pour créer un objet datetime contenant la date et l'heure locales actuelles.
Exemple 2 : Obtenir la date actuelle
# main.py import datetime as dte objet_date = dte.date.today() print(objet_date)Lorsque vous exécutez le programme, la sortie sera quelque chose comme :
2020-12-19
Dans ce programme, nous avons utilisé la méthode today() définie dans la classe date du module datetime que nous avons nommé (dte) pour obtenir un objet date contenant la date locale actuelle.
Qu'y a-t-il à l'intérieur du module datetime ?
Nous pouvons utiliser la fonction dir() pour obtenir une liste contenant tous les attributs d'un module.# main.py import datetime as dte print(dir(dte))Ce programe donne:
['MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'date', 'datetime', 'datetime_CAPI', 'sys', 'time', 'timedelta', 'timezone', 'tzinfo']Les classes les plus utilisées dans le module datetime sont les suivantes :
- Classe date
- classe time
- Classe datetime
- Classe timedelta
Si vous faites la même chose avec la classe datetime, vous aurez toutes les méthodes qu’elle contient.
# main.py import datetime as dte print(dir(dte.datetime))Et voici ci dessous la liste des méthodes les plus utlisées
- date, day, hour, minute, month,
- now, replace, second, strftime, strptime,
- time, timestamp, timetuple, timetz, today,
- weekday, year
La classe date du module datetime (datetime.date)
Vous pouvez instancier des objets date à partir de la classe date du module datetime.Un objet date représente une date (année, mois et jour).
Exemple : Un objet date pour représenter une date
# main.py import datetime d = datetime.date(2019, 4, 13) print(d)Dans l'exemple ci-dessus, date() est un constructeur de la classe date. Le constructeur prend trois arguments dans cet ordre : année, mois et jour.
La variable d est un objet date.
Nous pouvons importer la classe date seule depuis le module datetime. Voici ci-dessous comment :
# main.py from datetime import date d = date(2019, 4, 13) print(d)
Exemple : Obtenir la date actuelle
Vous pouvez créer un objet date contenant la date du jour en utilisant la méthode, nommée today(), de la classe date. Voici, dans le code qui suit, comment procéder :
# main.py
from datetime import date
ce_jour = date.today()
print("La date courante est : ", ce_jour)
Exemple : Obtenir une date à partir d'un horodatage (timestamp)
Nous pouvons également créer des objets date à partir d'un horodatage (timestamp). Un timestamp Unix est le nombre de secondes entre une date particulière et le 1er janvier 1970 à UTC. Vous pouvez convertir un timestamp en date en utilisant la méthode fromtimestamp() comme suit.
# main.py
from datetime import date
timestamp = date.fromtimestamp(1326244364)
print("La date est : ", timestamp)
En exécutant le programme, le résultat sera le suivant :La date est : 2018-09-06
Exemple : 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, etc. à partir de l'objet date. Voici comment :
# main.py
from datetime import date
# l'objet date de la date du jour courant
ce_jour = date.today()
print("Lannée courante est :", ce_jour.year)
print("Le mois courant est :", ce_jour.month)
print("Le jour courant est :", ce_jour.day)
La classe time du module datetime
Un objet time instancié de la classe time représente le temps local.Exemple : objet time pour représenter le temps local
# main.py
from datetime import time
# time(hour = 0, minute = 0, second = 0)
temps1 = time()
print("temps1 =", temps1)
# time(heure, minute et seconde)
temps2 = time(9, 44, 16)
print("temps2 =", temps2)
# time(heure, minute et seconde)
temps3 = time(hour = 9, minute = 44, second = 16)
print("temps3 =", temps3)
# time(heure, minute, seconde, microsecond)
temps4 = time(9, 44, 16, 334660)
print("temps4 =", temps4)
En excutant ce programme la sortie sera comme suittemps1 = 00:00:00 temps2 = 09:44:16 temps3 = 09:44:16 temps4 = 09:44:16.334660
Exemple : afficher l'heure, la minute, la seconde et la microseconde
Une fois que vous avez créé un objet temps, vous pouvez facilement imprimer ses attributs tels que l'heure, la minute, etc.
# main.py
from datetime import time
# time(heure, minute et seconde)
temps = time(9, 44, 16)
print("heure =", temps.hour)
print("minute =", temps.minute)
print("seconde =", temps.second)
print("microseconde =", temps.microsecond)
Lors de l'exécution de l'exemple, le résultat sera le suivant :heure = 9
minute = 44
seconde = 16
microseconde = 0
Remarque : nous n'avons pas passé l'argument microseconde. Par conséquent, sa valeur par défaut 0 est imprimée.
La classe datetime du module datetime
Le module datetime possède une classe dateclass qui peut contenir des informations provenant à la fois des objets date et heure.C'est la classe qui porte le même nom que le module soit la classe datetime.
Exemple : objet datetime en Python
# main.py from datetime import datetime #datetime(année, mois, jour) a = datetime(2018, 11, 28) print(a) # datetime(année, mois, jour, heure, minute, seconde, microseconde) b = datetime(2017, 11, 28, 23, 55, 59, 342380) print(b) Lorsque vous exécutez le programme, la sortie sera la suivante :2018-11-28 00:00:00 2017-11-28 23:55:59.342380Les trois premiers arguments année, mois et jour dans le constructeur datetime() sont obligatoires.
Afficher la date et le temps actuel
# main.py from datetime import datetime as dte a=dte.now() print(a)En exécutant le programme il affichera la date et le temps actuel local comme suit :
2022-09-04 22:16:03.487454
Exemple : Affichage de l'année, du mois, de l'heure, des minutes et de l'horodatage.
Pour afficher l'année, le mois, l'heure, la minute la seconde et l'horodatage on récupère les paramètres de la classe datetime : year, month, hour, minute, second et timestamp comme suit :
# main.py
from datetime import datetime as dte
a=dte.now()
print(a)
print("Année =", a.year)
print("mois =", a.month)
print("heure =", a.hour)
print("minute =", a.minute)
print("seconde =", a.second)
print("timestamp =", a.timestamp())
la sortie de ce programme sera comme suit:
2021-09-04 22:33:29.073540 Année = 2021 mois = 9 heure = 22 minute = 33 seconde = 29 timestamp = 1662327209.07354
Formater la date et l'heure en Python
La représentation de la date et de l'heure peut varier selon les lieux, les organisations, etc.Par exemple il est plus courant d'utiliser le format mm/dd/yyyy aux États-Unis, alors que le format dd/mm/yyyy est plus courant en France.
Les méthodes strftime() et strptime() de Python permettent de traiter ce problème.
Python strftime() - transformer un objet datetime en chaîne de caractères
La méthode strftime() est définie dans les classes date, datetime et time. La méthode crée une chaîne formatée à partir d'un objet date, datetime ou un temps donné.Exemple : Formater une date à l'aide de strftime()
# main.py
from datetime import datetime
# Date et temps courant
maintenant = datetime.now()
d = maintenant.strftime("%m/%d/%Y")
print("La date est : ", d)
t = maintenant.strftime("%H:%M:%S")
print("Maintenant il est :", t)
#Le format mm/dd/YY H:M:S
s1 = maintenant.strftime("%m/%d/%Y, %H:%M:%S")
print("s1:", s1)
# Le format dd/mm/YY H:M:S
s2 = maintenant.strftime("%d/%m/%Y, %H:%M:%S")
print("s2:", s2)
En exécutant ce programme, on aura un résultat semblable à celui-ci :La date est : 09/06/2022 Maintenant il est : 10:12:48 s1: 09/06/2021, 10:12:48 s2: 06/09/2021, 10:12:48Les symboles %Y, %m, %d, %H, etc. sont des codes de format. Avec la méthode strftime(), on prend un ou plusieurs codes de format et on renvoie une chaîne formatée en fonction de ce ou ces codes.
Donc dans le programme ci-dessus, d, t, s1 et s2 sont des chaînes de caractères.
Voici une liste de tous les codes de formats légaux :A reference of all the legal format codes:
| Directive | Description |
|---|---|
| %a | Jour de la semaine, version courte |
| %A | Jour de la semaine, version complète |
| %w | Jour de la semaine sous la forme d'un nombre de 0 à 6, 0 étant le dimanche. |
| %d | Jour du mois 01-31 |
| %b | Nom du mois, version courte |
| %B | Nom du mois, version complète |
| %m | Le mois est représenté par les chiffres 01-12 |
| %y | Année, version courte, sans siècle |
| %Y | Année, version complète |
| %H | Heure 00-23 |
| %I | Heure 00-12 |
| %p | AM/PM |
| %M | Minute 00-59 |
| %S | Seconde 00-59 |
| %f | Microseconde 000000-999999 |
| %z | Décalage UTC |
| %Z | Fuseau horaire |
| %j | Numéro du jour de l'année 001-366 |
| %U | Numéro de semaine de l'année, le dimanche est le premier jour de la semaine, 00-53 |
| %W | Numéro de semaine de l'année, le lundi est le premier jour de la semaine, 00-53 |
| %c | Version locale de la date et de l'heure |
| %C | Siècle |
| %x | Version locale de la date |
| %X | Version locale de l'heure |
| % | |
| % | Un caractère |
| %. | |
| %G | Année ISO 8601 |
| %u | ISO 8601 jour de la semaine (1-7) |
| %V | Numéro de semaine ISO 8601 (01-53) |
La méthode Python strptime() - transformer une chaîne de caractères en datetime
Avec la méthode strptime(), on transforme une chaîne de caractères (représentant la date et l'heure) en un objet datetime.Exemple : strptime(), transformer une chaîne de caractères en datetime
# main.py
from datetime import datetime
chaine_date = "21 June, 2018"
print("La chaîne de date est : ", chaine_date)
objet_date = datetime.strptime(chaine_date, "%d %B, %Y")
print("L'objet date est : ", objet_date)
print("\n")
maintenant = datetime.now()
d_str = maintenant.strftime("%d, %B, %Y")
print("Autre chaîne de date est : ", d_str)
d = datetime.strptime(d_str, "%d, %B, %Y")
print("Autre objet date : ", d)
La méthode strptime() prend deux arguments :une chaîne de caractères représentant la date et l'heure
un code de format correspondant au premier argument
A propos, les codes de format %d, %B et %Y sont utilisés respectivement pour le jour, le mois ( complet ) et l'année.