Dates#
datetime#
Le module datetime
fournit une classe datetime.datetime
qui permet de faire des opérations et des comparaisons sur les dates et les heures.
L’exemple suivant calcule l’âge d’une personne née le 11 août 1975.
<<<
import datetime
naissance = datetime.datetime(1975, 11, 8, 10, 0, 0)
jour = naissance.now() # obtient l'heure et la date actuelle
print(jour) # affiche quelque chose comme 2017-05-22 11:24:36.312000
age = jour - naissance # calcule une différence
print(age) # affiche 12614 days, 1:25:10.712000
>>>
2023-09-15 12:23:44.376500
17478 days, 2:23:44.376500
L’objet datetime.datetime
autorise les soustractions et les comparaisons entre deux dates. Une soustraction
retourne un objet de type datetime.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.datetime
.
L’utilisation de ce type d’objet évite de se pencher sur tous les problèmes de conversion.
Le module calendar
est assez pratique pour construire des calendriers. Le programme ci-dessous
affiche une liste de t-uples incluant le jour et le jour de la semaine du
mois d’août 1975. Dans cette liste, on y trouve le t-uple (11,0)
qui signifie que le 11 août 1975 était un lundi. Cela permet de récupérer
le jour de la semaine d’une date de naissance.
<<<
import calendar
c = calendar.Calendar()
for d in c.itermonthdays2(1975, 8):
print(d)
>>>
(0, 0)
(0, 1)
(0, 2)
(0, 3)
(1, 4)
(2, 5)
(3, 6)
(4, 0)
(5, 1)
(6, 2)
(7, 3)
(8, 4)
(9, 5)
(10, 6)
(11, 0)
(12, 1)
(13, 2)
(14, 3)
(15, 4)
(16, 5)
(17, 6)
(18, 0)
(19, 1)
(20, 2)
(21, 3)
(22, 4)
(23, 5)
(24, 6)
(25, 0)
(26, 1)
(27, 2)
(28, 3)
(29, 4)
(30, 5)
(31, 6)
Autres formats de date#
La date d’un événement est constamment utilisée,
la date de modification d’un fichier par exemple pour détecter
que celui-ci a été modifié depuis sa synchronisation avec un site web
par exemple. On appelle ces dates associées à des événements
des timestamp.
Ce sont des nombres entiers qui expriment le nombre de secondes
qui se sont écoulées depuis une certaine origine qui
dépend du système d’exploitation. C’est un nombre réel :
la partie entière est un nombre de seconde, la partie décimale
donne les millisecondes. La valeur n’a pas de sens exploitable
à moins de la convertir en un format compréhensible.
C’est ce que fait la fonction datetime.datetime.fromtimestamp()
.
<<<
import time
ts = time.time()
print(ts)
import datetime
st = datetime.datetime.fromtimestamp(ts).strftime("%Y-%m-%d %H:%M:%S")
print(st)
>>>
1694773424.3852384
2023-09-15 12:23:44