Divergência de fuso horário: a verificação de consistência mais barata da web

De todas as verificações de consistência que um site pode executar, comparar fusos horários é a mais barata. Basta uma chamada JavaScript e uma consulta que o servidor já faz. É também um dos motivos mais comuns para uma conta ser examinada com mais atenção.
Dois fusos horários, duas fontes
O primeiro fuso horário vem do seu endereço. O servidor sabe de onde a requisição veio e usa um banco de dados de geolocalização para associar esse endereço a uma região e ao seu fuso horário. Para uma conexão de Paris, é Europe/Paris. Isso acontece no servidor; o seu navegador não tem voz nisso.
O segundo vem do seu navegador. Intl.DateTimeFormat().resolvedOptions().timeZone retorna o nome IANA com que o sistema operacional está configurado, e new Date().getTimezoneOffset() retorna o deslocamento UTC atual. Se a máquina estiver configurada para Berlim, a página vê Europe/Berlin, independentemente de onde os pacotes vieram.
Por que eles divergem
Os motivos honestos são viagens, um notebook que nunca teve a região do relógio alterada e redes corporativas que saem em outro país. O motivo que interessa aos sites são os proxies: um navegador em um país usando um endereço em outro, sem que ninguém tenha pensado no relógio. Paris e Berlim têm o mesmo deslocamento, então o deslocamento sozinho coincidiria; o nome IANA não. As verificações que comparam nomes pegam isso, e é por isso que um diagnóstico mostra tanto o nome do navegador quanto o do endereço, em vez de um deslocamento numérico.
O que uma divergência significa
Sozinha, nada de conclusivo. Muita gente real a provoca. Mas é um sinal barato, e os sistemas de pontuação somam sinais baratos. Uma divergência somada a um endereço classificado como hospedagem e a um candidato WebRTC em um terceiro lugar é uma história diferente de uma divergência isolada.
Fazendo os dois concordarem
Há duas maneiras de obter um resultado consistente. Definir o fuso horário do sistema operacional de acordo com o endereço, o que funciona, mas é desajeitado quando vários perfis usam endereços diferentes. Ou deixar o perfil do navegador sobrescrever o fuso horário que informa, que é o que os navegadores feitos para isso fazem: o fuso horário do perfil segue o endereço com o qual ele é iniciado, de modo que os dois nomes coincidem automaticamente. A segunda abordagem também precisa cobrir o deslocamento atual, as transições do horário de verão e as strings de data localizadas, porque um script pode comparar todos eles. Um perfil que informa Europe/Paris mas formata datas com um deslocamento de Berlim apenas mudou a contradição de lugar.
O que procurar em um relatório
Um diagnóstico que mostra "Fuso horário com base no IP" e "Fuso horário" lado a lado, e os destaca quando diferem, está fazendo exatamente o que a verificação de um site faria. Se coincidem, a verificação passa. Se não, você agora sabe qual dos dois mudar. De qualquer forma, o útil é a comparação em si, e não uma pontuação ligada a ela.


