
Un message d'erreur qui sonne comme un reproche, voilà ce qui m'a trotté dans la tête certains soirs, alors que j'apprends python en autodidacte à côté d'un emploi à temps plein. Mon obsession de ces dernières semaines, c'est presque ridicule à avouer : réussir à afficher correctement la date et l'heure dans un petit script de journal de bord. Le module datetime a fini par devenir l'adversaire récurrent de mes soirées, celui qui me fait fermer l'ordinateur plus tard que je ne le voudrais.
Le nombre à dix chiffres qui m'a semée
Tout a commencé avec une ligne toute simple, tapée sans réfléchir : import time. Dans ma tête, le temps c'est le temps, donc ça ne pouvait pas être bien compliqué. Python m'a répondu par un chiffre interminable, un genre de 1735689600 qui ne ressemblait à rien d'humain. Sur le moment, j'ai cru que mon vieux portable avait fait un caprice de calcul.
En cherchant ce que représentait ce chiffre, je suis tombée sur le début de l'ère Unix : pour un ordinateur, le temps démarre le 1er janvier 1970, et tout ce qui suit se compte en secondes depuis ce jour-là. Fascinant, mais franchement peu pratique pour une tête qui pense encore en jours de la semaine et en rendez-vous à rattraper. Sur les conseils glanés dans un forum, j'avais téléchargé un manuel entièrement en anglais, réputé complet, pour comprendre ce fonctionnement plus en profondeur ; chaque paragraphe supposait déjà que je savais coder, et j'ai fini par le refermer après deux ou trois soirées, plus perdue qu'avant de l'ouvrir.
Ce souvenir m'a rappelé une autre bataille, plus ancienne, quand j'essayais d'utiliser le module random en python pour créer mon premier jeu sans rien comprendre à ce qui se passait sous le capot. Le temps, lui, s'est vite révélé un adversaire d'un tout autre calibre : on ne peut pas simplement le deviner à l'instinct, comme on ajuste une pincée de sel en cours de cuisson.

%m et %M ne parlent pas la même langue
Le module datetime, une fois qu'on s'y attaque sérieusement, ressemble à une soupe bien plus épaisse que prévu. On ne peut pas juste imprimer un objet date tel quel, il faut le formater avec des directives strftime. Pour une date simple, il a fallu retenir trois codes de base : %Y pour l'année, %m pour le mois et %d pour le jour, un peu comme apprendre par cœur les abréviations d'une recette de famille avant de pouvoir la suivre les yeux fermés.
Un soir, dans un élan de confiance mal placé, j'ai confondu %m et %M, le mois et les minutes. Mon programme s'est mis à afficher que nous étions au mois 45, et j'ai eu une seconde de vertige en me demandant si j'avais inventé un calendrier auvergnat parallèle. L'anse de ma tasse de tisane, froide depuis un moment, était redevenue tiède sous mes doigts avant que je comprenne enfin où se cachait la faute.
Cette confusion entre deux lettres presque identiques m'a rappelé mes débuts, quand je ne comprenais pas pourquoi mes conditions refusaient de fonctionner, avant de comprendre les opérateurs logiques and or en python pour ses conditions. C'est toujours un détail minuscule qui fait tout basculer, et sur le coup, on n'a qu'une envie : refermer l'ordinateur et aller se coucher.
Trouver enfin .now() grâce à ma formation-python
Le vrai tournant est arrivé après quelques semaines de pratique plus régulière, volées entre deux corvées et une charge de travail qui ne s'allège jamais vraiment. Dans un chapitre de ma formation-python, j'ai découvert la méthode .now(). En une ligne, datetime.datetime.now(), j'obtenais enfin l'instant présent, sans détour par les secondes depuis 1970.
J'ai aussi découvert la norme ISO 8601, ce format international qui range toujours l'année avant le mois et le jour avant l'heure. Fini de me demander si je devais écrire la date à la française ou à l'américaine : je suis la norme, un point c'est tout, et ça évite bien des migraines. Pour rendre mes affichages plus lisibles, j'ai commencé à utiliser les f-strings en python pour ne plus m'embrouiller, ce qui m'a permis d'insérer la date directement dans mes phrases, comme on glisserait une info dans une liste de courses déjà écrite.
Pendant ce temps, un voisin de palier partait crapahuter en trail du côté de la chaîne des Puys presque chaque week-end, pendant que moi je retournais négocier avec un objet datetime qui refusait de coopérer. Deux façons bien différentes de décompresser, mais je crois que la mienne, sur le moment, ressemblait plus à un combat qu'à une vraie pause.

Arrow a changé ma façon de compter le temps
Il existe une bibliothèque qu'on ne croise pas toujours dans les manuels pour grands débutants et qui s'appelle Arrow. Python gère le temps de deux manières : des objets dits « naïfs », qui ignorent totalement où ils se trouvent sur la planète, et des objets « conscients », qui connaissent leur fuseau horaire. Au début, la différence semble anecdotique, jusqu'au jour où on veut calculer une durée ou travailler avec un serveur qui ne vit pas à la même heure que la cuisine.
Arrow, c'est un peu comme remplacer un vieux moulin à légumes à manivelle par un robot qui hache tout en un geste : la syntaxe colle beaucoup plus à la façon dont on pense, la gestion des fuseaux horaires est incluse sans qu'on ait à la réclamer, et transformer une date en formule du genre « il y a deux heures » devient presque trivial, ce qui est parfait pour un journal comme le mien.
Une victoire discrète, un soir de plus
Vers la douzième semaine de cet entêtement du soir, un message d'erreur qui m'aurait semblé incompréhensible quelques mois plus tôt a fini par sonner presque poli, et j'ai trouvé la bonne direction sans paniquer. En appuyant sur Entrée, j'ai vu s'afficher 2026-09-03 sur ma console, suivi de l'heure exacte, et pour une fois, cette ligne blanche sur fond noir m'a paru méritée.
La question du début garde encore une partie de sa réponse en suspens, mais j'ai au moins retenu une chose qui dépasse le module datetime : un message d'erreur n'est pas une punition, c'est une phrase qu'il suffit de relire une deuxième fois, plus lentement. La suite ? Peut-être calculer combien de jours il me reste avant mes prochaines vacances, histoire de vérifier si je sais vraiment soustraire deux dates sans tout faire exploser. Mais ça, ce sera pour un autre soir, quand mes yeux ne piqueront plus autant.