Rendu à chaque timbre dans la zone du membre, lire chacun comme UTC

Fixkamo-internal
Expédié
22 août 2026 à 11:28 UTC
Auteur
kamo
Commite
ec88120

Un message direct envoyé à 3 h 33 du matin du Pacifique affiche "10:33 AM" - l'UTC brut horloge, imprimée comme si elle était locale. Deux défauts indépendants, présents ensemble sur presque toutes les surfaces qui montrent un temps. LE PARS. Chaque service Java stocke des horodatages comme LocalDateTime et les met sur le fil avec toString(): "2026-08-22T10:33:12.345", sans décalage et Non. La valeur est UTC, parce que les gousses le sont, mais la corde ne le dit pas. et ECMAScript lit un délai de date sans décalage en tant que LOCAL. Le navigateur d'Angeles a atterri avec sept heures de retard, de manière plausible, silencieuse, partout. THE RENDER. toLocaleTimeString() sans temps - formats dans les FREMBRES zone, un fait sur l'ordinateur portable. Un membre dont le profil dit Eastern un hôtel à Denver doit toujours lire ses dossiers à l'Est. useFormatters() a construit tous les Intl.DateTimeFormat sans temps - un du tout. app/lib/serverTime.ts est maintenant le seul endroit où les deux sont installés: parseServerDate / toServerDate / serverEpochMillis traite une chaîne sans décalage comme UTC et passez a le fait de porter une zone à travers intacte; le formatIn-one et les amis rendent dans un zone explicite; une nue AAA-MM-JJ reste le jour où elle nomme au lieu de glisser retour pour tout le monde à l'ouest de Greenwich; zonedDayKey baguettes par le membre Un message Pacific de 18 heures s'arrête de se déposer en dessous de demain. La zone elle-même est résolue SERVER-SIDE dans la configuration des racines et portée par MemberTimezoneProvider, de sorte que SSR et le client s'accordent sur le premier rendu plutôt l'utilisationFormatters() le lie, et 175 composants maintenant Le service est remplacé et documenté en tant que tel: il est mis en évidence. Lire le T', que PostAuth-Service remplit plutôt la ligne USERS que le profil de membre, puis le cache dans localStorage pour toujours - ce qui est la raison pour laquelle la correction d'un fuseau horaire de profil ne semblait rien faire jusqu'à ce que les données du site Délivrance. Pas seulement des cosmétiques. Les reçus de lecture de chat ont été comparés aux horochages de temps par message. sur deux horloges différentes, et cette comparaison décide si "non-endire" ou "revoke attachment" est proposé. callbackUrency et dueUrgency répond:" est ce qui est dû aujourd'hui" sur le calendrier du navigateur; les deux prennent maintenant la zone du membre, et leurs tests le nomment plutôt que de dépendre de l'endroit où la suite fonctionne. est câblé en npm test et échoue à la construction sur une nouvelle occurrence de l'un ou l'autre défaut - y compris la Date.parose et Éthographe Intl.DateTimeFormat. Un test ne peut pas attraper cela seul: les fixations obtiennent construit avec TOISOString(), qui accompagne la production en euros n'envoie pas, de sorte que le suite passe pendant que l'application est dehors. Exceptions authentiques (horloge murale membre tapé, une date de calendrier ancrée à midi UTC) porte un serveurTime-ok commenter pourquoi.

Tous les changements

Comme ce que tu vois expédier ?

Chacune de ces mises à jour atterrit automatiquement dans votre espace de travail. Commencez gratuitement et regardez-le grandir semaine après semaine.

Commencez gratuitement pour toujoursPrix de visualisation