Renderize cada timestamp na zona do membro, leia cada um como UTC

Fixkamo-internal
Navios
22 de agosto de 2026 às 11:28 UTC
Autor
kamo
Enviar
ec88120

Uma mensagem direta enviada às 3:33 AM Pacific exibida "10:33 AM" — o UTC bruto Relógio, impresso como se fosse local. Dois defeitos independentes, presentes juntos em quase todas as superfícies que mostram um tempo. O parque. Cada serviço Java armazena datas como LocalDateTime e as coloca no fio com toString(): "2026-08-22T10:33:12.345", sem deslocamento e não Z. O valor é UTC, porque os pods são, mas a string não o diz — e o ECMAScript lê uma data-hora sem compensação como LOCAL. new Date() em um Los O navegador de Angeles chegou sete horas atrasado, plausivelmente, silenciosamente, em todo o lado. THE RENDER. toLocaleTimeString () sem formatos timeZone no BROWSER's Zona, um facto sobre o portátil. Um membro cujo perfil diz Eastern trabalhando de Um hotel em Denver ainda deve ler os seus registos em Eastern. useFormatters () construiu todos os Intl. DateTimeFormat sem tempoZone em tudo. app/lib/serverTime.ts é agora o único lugar onde ambos estão estabelecidos: parseServerDate / toServerDate / serverEpochMillis trata uma string offset-less como UTC e passa um zone-suportando um através de intocado; formatoInZone e amigos renderizar em um zona explícita; uma YYYY-MM-DD nua permanece no dia em que nomeia em vez de deslizar voltar um para todos a oeste de Greenwich; zonedDayKey baldes pelo membro Então uma mensagem das 18:00 do Pacífico deixa de se apresentar amanhã. A zona em si é resolvido SERVER-SIDE no layout raiz e transportado por MemberTimezoneProvider, então SSR e o cliente concordam com a primeira renderização em vez do que virar após hidratação. useFormatters () liga- o, e 175 componentes agora Assuma a partir daí. timezoneService é substituído e documentado como tal: lê o TZ de ***, que PostAuth***Service preenche da linha USERS em vez do que o perfil de membro, em seguida, cache-lo no localStorage para sempre — por isso corrigir um perfil de fuso horário parecia não fazer nada até que os dados do site Limpo. Não só cosmética. Os recibos de leitura do chat foram comparados com os horários das mensagens em dois relógios diferentes, e essa comparação decide se "não enviar" ou "Revogar apego" é oferecido. callbackUrgência e dueUrgência responderam "é este devido hoje" no calendário do navegador; ambos agora tomar a zona do membro, e seus testes nomeá-lo em vez de depender de onde a suíte corre. Está ligado ao teste NPM e falha na construção. sobre uma nova ocorrência de qualquer defeito — incluindo o Date.parse e Intl. DataTimeFormat ortografias. Um teste não pode apanhar isto sozinho: built with toISOString(), que adiciona a produção Z não envia, então o suite passa enquanto o aplicativo está horas fora. Excepções genuínas (um relógio de parede membro digitado, uma data de calendário ancorada ao meio- dia UTC) carrega um servidorTime-ok comentar dizendo porquê.

Todas as alterações

Como o que vês no transporte?

Cada uma dessas atualizações pousa automaticamente em seu espaço de trabalho. Comece grátis e veja crescer semana após semana.

Começar Livre Para SempreVer Preços