Dates

datetime

Le module datetime fournit une classe 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

>>>

    2020-10-19 11:45:43.010223
    16417 days, 1:45:43.010223

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.

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 fromtimestamp.

<<<

import time
ts = time.time()
print(ts)

import datetime
st = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
print(st)

>>>

    1603100743.0361657
    2020-10-19 11:45:43