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

>>>

    2024-10-05 13:25:42.773070
    17864 days, 3:25:42.773070

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)

>>>

    1728127542.7847495
    2024-10-05 13:25:42