Como os fusos horários funcionam de verdade
· 5 min de leitura
Um fuso horário não é uma fatia do globo: é um conjunto de regras com nome sobre o que um relógio em determinado lugar marcou, marca e está previsto marcar. Essa distinção é o assunto inteiro.
Pergunte a quase qualquer pessoa o que é um fuso horário e ela descreverá uma faixa vertical num mapa: o mundo dividido em vinte e quatro fatias iguais, separadas por uma hora, governadas pela longitude. Esse modelo é arrumado, fácil de lembrar e errado de um jeito que uma hora vai custar uma reunião.
Um fuso horário é um conjunto de regras com nome, mantido por um governo, sobre o que os relógios marcam em determinado território. As regras podem mudar. Mudam por motivos políticos, por motivos econômicos e, de vez em quando, com quinze dias de aviso. A longitude é onde a ideia começou; não é onde ela terminou.
De onde veio a ideia
Antes da década de 1880, cada cidade mantinha sua própria hora, acertada pelo meio-dia local — o momento em que o sol cruzava o meridiano acima. Bristol ficava dez minutos atrás de Londres, e ninguém se incomodava, porque nada viajava rápido o bastante para que dez minutos importassem.
As ferrovias mudaram isso. Um horário que diz que o trem parte às 10h15 não serve de nada quando 10h15 significa coisas diferentes em cada ponta da linha, e já nos anos 1840 as companhias ferroviárias britânicas simplesmente impuseram a hora de Londres a toda a sua malha. Os Estados Unidos seguiram em 1883, com as ferrovias cortando o país em quatro fusos por conta própria. A Conferência Internacional do Meridiano, em 1884, fez de Greenwich o meridiano de origem e deu ao mundo uma referência comum.
O importante nessa história é que os fusos horários foram inventados para resolver um problema de coordenação, pelas organizações que tinham esse problema. Eles nunca foram uma descrição de onde o sol está.
O que um fuso realmente contém
O registro com autoridade é o banco de dados de fusos horários da IANA, também chamado de tzdata ou banco de Olson. É um arquivo de texto, atualizado várias vezes por ano, e todo sistema operacional, navegador e linguagem de programação que você usa está lendo alguma versão dele.
Para cada fuso, ele registra:
- um identificador, como
America/New_YorkouAsia/Kathmandu - a diferença para o UTC vigente em cada período da história daquele fuso
- as regras de quando essa diferença muda, se é que muda
- uma sigla para cada período, quando existe uma
Os identificadores seguem a convenção Área/Localidade, e a localidade é uma cidade representativa em vez de um país, porque países se dividem, se juntam e mudam suas regras independentemente das fronteiras. America/Argentina/Buenos_Aires existe porque as províncias argentinas já mantiveram horas diferentes entre si.
Repare no que um fuso não é: ele não é uma diferença. America/New_York não é “UTC-5”. É um fuso cuja diferença é UTC-5 em parte do ano e UTC-4 no resto, que ficou em UTC-5 o ano inteiro durante a Segunda Guerra Mundial e que usava outro conjunto de regras antes de 1966. Guardar “UTC-5” e chamar isso de Nova York é, de longe, o defeito de fuso horário mais comum em software.
As regras mudam, e não aos poucos
Em 2016 a Turquia abandonou o horário de verão com cerca de três semanas de aviso e ficou permanentemente em UTC+3. Em 2018 a Coreia do Norte moveu seus relógios em 30 minutos para se realinhar com o Sul. Em 2022 o Irã aboliu o horário de verão; no mesmo ano o México o eliminou na maior parte do território. O Egito o restabeleceu em 2023, depois de tê-lo abolido em 2014.
Cada um desses casos virou uma publicação do tzdata, e cada um quebrou todo sistema que tinha uma tabela de diferenças escrita à mão. É por isso que o motor por trás de cada página deste site lê as diferenças da cópia de tzdata do ambiente de execução, e não de algo guardado aqui. Uma recompilação incorpora as regras novas; não há nada para editar.
Por que nem toda diferença é de horas inteiras
Cerca de um quinto da população mundial vive com uma diferença que não é um número inteiro de horas em relação ao UTC. A Índia está em UTC+05:30, escolhido como fuso único de compromisso para um país largo o bastante para justificar dois. O Nepal está em UTC+05:45, e esses quarenta e cinco minutos servem em parte para afirmar independência da hora indiana. As ilhas Chatham estão em UTC+12:45. A Terra Nova, em UTC-03:30.
Software que presume diferenças de horas inteiras não apenas arredonda: ele produz respostas erradas por 30 ou 45 minutos para centenas de milhões de pessoas — exatamente o tamanho de erro que se descobre durante a ligação, e não antes.
Os dois dias do ano em que a hora local não é uma função
O horário de verão cria duas descontinuidades anuais, e é por causa delas que “converter esta hora local” é mais difícil do que parece.
Adiantar apaga uma hora. Em Nova York, no dia da mudança, 01:59:59 é seguido imediatamente por 03:00:00. A hora local 02:30 não acontece. Se alguém digitá-la, não existe instante correto a devolver — apenas políticas sobre o que devolver no lugar.
Atrasar repete uma hora. 01:30 acontece duas vezes, uma no horário de verão e outra uma hora depois no horário padrão. Uma hora local sozinha é genuinamente ambígua; é preciso saber a qual ocorrência a pessoa se referia, e quase nenhuma interface pergunta.
Todas as ferramentas deste site resolvem os dois casos explicitamente e contam o que fizeram. Escolher um em silêncio é como um compromisso de agenda acaba uma hora fora sem ninguém perceber até a ligação.
O que isso significa na prática
Do mecanismo decorrem três regras, e elas cobrem quase tudo o que dá errado:
- Guarde instantes, não horas locais. Uma marca de tempo em UTC não é ambígua. Uma hora local é uma marca de tempo mais um fuso mais uma política para os dois dias incômodos.
- Guarde o identificador do fuso, não a diferença.
Europe/Londonsobrevive a uma mudança de regra;UTC+0não, e ainda por cima está errado metade do ano. - Converta na hora de exibir, usando a tzdata do ambiente. Não na hora de guardar, e nunca a partir de uma tabela que você mesmo mantém.
O motivo de este site insistir em “na última compilação” ao falar de diferenças, e calcular as horas atuais no seu navegador, é exatamente o mesmo. Essas regras não são nossas para congelar.