5 min de lecture
La plupart des applis d'habitudes décident quand « aujourd'hui » se termine de la même façon que la plupart des serveurs web : à minuit, dans le fuseau horaire où tourne le serveur — souvent UTC. C'est une hypothèse invisible que presque personne ne remarque, jusqu'au jour où elle casse discrètement une série qu'on n'a rien fait pour perdre.
L'heure du serveur est pratique à coder et complètement hors sujet par rapport à l'heure à laquelle votre journée commence et se termine réellement. Si une appli enregistre une habitude complétée sous « aujourd'hui » en utilisant minuit UTC comme coupure, elle suppose silencieusement que chaque utilisateur vit à UTC+0. Ce n'est presque jamais le cas.
Ça se manifeste rarement comme un bug évident — plutôt comme une série qui se réinitialise sans raison apparente. Les personnes les plus touchées : les grands voyageurs qui traversent des fuseaux horaires en cours de séjour, les travailleurs à distance qui suivent leurs habitudes depuis un pays différent de celui où ils se sont inscrits, les travailleurs de nuit dont la « journée » naturelle dépasse largement minuit, et les nomades numériques qui peuvent traverser trois fuseaux horaires en un seul mois.
Quelqu'un à Tokyo (UTC+9) complète son habitude du soir à 23h, heure locale. En UTC, ce même instant correspond déjà à 14h le jour calendaire suivant. Une appli qui suit « aujourd'hui » selon minuit UTC classerait cette complétion sous demain, pas ce soir — laissant la soirée avoir l'air incomplète et, selon les règles de l'appli, mettant discrètement fin à une série qui, du point de vue de la soirée de l'utilisateur, n'a en réalité jamais été rompue.
La solution n'est pas compliquée en théorie : stocker le fuseau horaire IANA de chaque utilisateur (les identifiants standards comme « Europe/Paris » ou « Asia/Tokyo », qui gèrent aussi automatiquement l'heure d'été), et calculer chaque frontière du jour, chaque calcul de série et chaque rappel quotidien à partir de ce fuseau horaire enregistré plutôt que de l'horloge du serveur.
C'est facile à négliger, justement parce que ça ne se manifeste que comme un cas limite — jusqu'au jour où c'est votre cas limite, et là une série cassée paraît arbitraire, et un peu injuste, parce qu'elle l'est.
Chaque profil Iniscia enregistre son propre fuseau horaire, et chaque frontière « aujourd'hui » — pour cocher une habitude, pour le tableau de bord, pour le rappel quotidien — est calculée à partir de ce fuseau, pas de l'heure du serveur. C'est un petit détail. Il ne compte que le jour où il ne fonctionne pas, ce qui est exactement pourquoi ça vaut la peine de bien le faire avant que ce jour n'arrive pour vous.
Gratuit pour commencer, séries honnêtes, aucune fausse progression.
Commencer gratuitement