Dans ce sixième cours de la série, nous abordons une notion incontournable dès qu’une application dépasse les frontières d’un seul pays : les fuseaux horaires.
Dès qu’il devient nécessaire d’afficher une date ou une heure dans le fuseau horaire de l’utilisateur, la gestion du temps se complexifie rapidement. Décalages horaires, villes de référence, heure d’été et heure d’hiver, formats ISO 8601 avec offset… autant de sujets qui paraissent simples au premier abord, mais qui demandent une vraie méthode pour être traités proprement.
Dans ce cours, nous allons enrichir notre classe Stmp pour lui permettre de charger et exploiter un référentiel complet de fuseaux horaires, d’associer des villes à leurs zones, de calculer des décalages entre villes, puis d’adapter les fonctions fondamentales de la classe (build, now, getDate, getTime) afin qu’elles puissent intégrer cette dimension internationale.
Nous verrons également comment faire évoluer les fonctions de conversion ISO 8601 pour gérer explicitement les offsets horaires, et ainsi produire ou interpréter des dates et heures dans des formats standardisés et exploitables dans des échanges entre systèmes.
Au-delà des fuseaux horaires eux-mêmes, ce cours est aussi une très bonne illustration de plusieurs bonnes pratiques de conception : chargement différé de ressources, mise en cache de données, gestion de propriétés partagées dans un singleton, évolution progressive d’une API existante, et utilisation des paramètres variadiques pour conserver une interface à la fois souple et puissante.