Chapitre 3.2
Timestamp et formats de date
Pour un utilisateur, une date semble simple : "3 mai 2025", "hier", ou "dans 2 heures".
Mais pour une machine, une date est une donnée brute, qui doit être stockée, comparée, transmise ou transformée avec rigueur.
Entre les formats d'affichage internationaux et les formats de stockage, les développeurs doivent jongler
avec des règles précises, au risque d'afficher des résultats incohérents.
Les timestamps
À la fin des années 60, début 70, l'équipe de développement d'Unix s'est demandée comment stocker et communiquer un format
de date léger, universel, indépendant du fuseau horaire et facile à comparer.
Deux constats, à l'époque :
- Les ordinateurs ne disposaient que de très peu de mémoire.
- Les processeurs manipulaient essentiellement des nombres entiers et les opérations arithmétiques basiques.
L'équipe a ainsi eu l'idée de représenter une date par un nombre de secondes écoulées depuis un point fixe dans le temps qu'on
appelle "l'époque Unix" ou "epoch".
Ils ont choisi le 1er janvier 1970 à minuit sur le fuseau horaire UTC, ça leur assurait un petit nombre au lancement
de leur système. Par exemple, le 3 mai 1970 correspond au timestamp 10 540 800. Un nombre négatif représente les dates
antérieures : le timestamp -1 correspond ainsi au 31 décembre 1969 à 23:59:59.
S'ils avaient choisi l'an 0 comme point de départ, le 3 mai 1970 serait représenté par le timestamp 62 146 137 600.
Un nombre beaucoup trop gros pour les capacités de 1970, les processeurs ne sachant gérer que des nombres allant de −2 147 483 648 à 2 147 483 647.
Le choix du 1er janvier 1970 permet de couvrir une période allant du 13 décembre 1901 au 19 janvier 2038.
C'est pourquoi on s'attend au "bug de l'an 2038" sur tous les anciens systèmes qui tournent toujours sur des
architectures 32 bits.
Pas d'inquiétude à avoir sur les systèmes modernes qui utilisent une architecture 64 bits,
on a de la marge pour les 292 prochains milliards d'années.
Les formats de date
Le timestamp, c'est techniquement très intéressant. Par contre, c'est illisible pour un humain qui regarde
les traces d'un appel vers un partenaire ou qui étudie les données stockées dans une base. Dans ces situations,
les développeurs peuvent préférer remplacer les timestamps par des formats de date compréhensibles sans effort.
Concernant les formats de dates, chacun a ses pratiques locales : 03/05/2025 représente le 3 mai en Europe, mais le 5 mars aux USA.
Le Japon, lui, utilise 2025/05/03. Même chose pour l'heure, certains vont préférer 18h45, d'autres 6:45 PM.
C'est pour accorder tout le monde qu'a été défini le format international ISO 8601.
Lisible et logique, il classe les éléments du plus large au plus précis : 2025-05-03 18:45:21.
Ça le rend facile à trier et comparer par un système informatique.
Mais ce format ne répond pas à tous nos besoins :
- Il n'est pas présentable tel quel à un public international.
- Il ne contient aucune notion de fuseau horaire.
Nous continuerons donc d'étudier les dates dans les prochains chapitres.
