2 pontos por GN⁺ 2024-10-31 | 1 comentários | Compartilhar no WhatsApp
  • Fusos horários são complicados, mas como os computadores precisam implementá-los, sua estranheza existe apenas dentro de um intervalo finito.
    • Asia/Kathmandu tem um deslocamento incomum em relação ao UTC.
    • Africa/Casablanca não se encaixa bem no modelo de fuso horário, então é tratado com hardcode.
    • America/Nuuk inicia o horário de verão a partir de -01:00.
    • Africa/Cairo e America/Santiago iniciam o horário de verão às 24h (e não à 0h).
    • Australia/Lord_Howe tem a regra de horário de verão mais estranha.

PGXIIREAM: o Papa Gregório XIII controla tudo

  • A maior parte do mundo usa um sistema de tempo baseado no calendário gregoriano.
  • O calendário gregoriano é muito útil para manter a posição do sol consistente ao longo do ano.
  • UTC é a formulação oficial moderna do calendário gregoriano, e o mundo inteiro define o tempo com base nele.

Segundos bissextos não importam

  • A rotação da Terra está desacelerando, e segundos bissextos são adicionados para compensar isso.
  • Segundos bissextos podem ser ignorados porque linguagens de programação não representam 61 segundos.
  • Provedores de nuvem resolvem o problema desacelerando seus relógios durante um segundo bissexto.

Fusos horários estranhos

Asia/Kathmandu tem um deslocamento incomum

  • O Nepal está 5 horas e 45 minutos à frente do UTC.
  • Os computadores conseguem saber disso por meio do banco de dados de fusos horários da IANA.

Strings como PDT ou CET não significam nada

  • Identificadores de fuso horário podem ser ambíguos, e muitos fusos compartilham o mesmo identificador.

Como fusos horários com horário de verão são representados?

  • As regras de transição do horário de verão são complexas, e os computadores calculam a hora local com base nelas.

Africa/Casablanca e Asia/Gaza seguem a lua, mas fusos horários seguem o sol

  • Marrocos e Gaza ajustam o horário de verão de acordo com o Ramadã, e isso é tratado com hardcode.

America/Nuuk muda para o horário de verão à -1h

  • A Groenlândia inicia o horário de verão no mesmo momento que a Europa, mas no horário local isso acontece à -1h.

America/Santiago e Africa/Cairo fazem a transição às 24h

  • Esses fusos mudam para o horário de verão às 24h, o que significa passar para o dia seguinte.

Australia/Lord_Howe tem a transição de horário de verão mais estranha

  • A Ilha Lord Howe tem uma transição de horário de verão de 30 minutos.

Resumo do GN⁺

  • Fusos horários são complicados, mas como os computadores precisam implementá-los, sua estranheza existe apenas dentro de um intervalo finito.
  • Australia/Lord_Howe é o fuso horário mais peculiar, com uma transição de horário de verão de 30 minutos.
  • Este artigo é útil para entender a complexidade dos fusos horários e pode ser interessante para programadores.
  • Um projeto com funcionalidade semelhante é o tzdb.

1 comentários

 
GN⁺ 2024-10-31
Comentário do Hacker News
  • O banco de dados tz não calcula transições de fuso horário anteriores ao Big Bang. Timestamps anteriores ao Big Bang são fisicamente suspeitos

    • Por exemplo, o Glib ainda aplica as regras de 1913 do Brasil para calcular timestamps de São Paulo
    • Segundos intercalares anteriores ao Big Bang também não são permitidos
  • O fuso horário Africa/Addis_Ababa não é seguido por ninguém na Etiópia

    • Os moradores locais usam um deslocamento de 6 horas ao marcar o horário
    • O ciclo AM começa de madrugada, e o ciclo PM começa ao anoitecer
  • Não é verdade que linguagens de programação não consigam representar minutos com 61 segundos

    • O Raku oferece suporte a segundos intercalares
    • O DateTime.pm do Perl 5 também oferece suporte a segundos intercalares, o que aumenta a complexidade
    • Segundos intercalares quase não são usados e aumentam a complexidade do código
  • O fuso horário Asia/Jerusalem é complexo por causa de questões religiosas e nacionais

    • Por motivos religiosos, o horário de verão é definido por negociação todos os anos
    • Existem exceções para que o horário de verão não termine em Rosh HaShanah
  • Experiência escrevendo uma função para encontrar a hora local com base em endereços dos EUA

    • Mapear estados e fusos horários de forma estática é difícil por causa dos casos de borda
    • Foi comprada e usada uma CSV que mapeava CEPs e offsets de UTC
    • Existem fusos horários complexos por causa de territórios ultramarinos dos EUA e bases militares
  • O fuso horário da Palestina é anunciado pelo governo todos os anos, sem datas fixas para início e fim do horário de verão

    • Avisos com menos de uma semana de antecedência podem causar vários problemas
  • Uma leitura interessante sobre a flexibilidade do software de fusos horários

    • A política de horário de verão pode não se limitar a ajustes de 60 minutos
    • Um país pode ter offsets que mudam continuamente ao longo do ano
  • Quando um governo aboliu o horário de verão e no ano seguinte mudou de fuso horário, isso gerou confusão

    • No desenvolvimento de apps Android, houve problemas por causa do banco de dados de fusos horários embutido na imagem do sistema
  • O banco de dados tz é o diff do diff da diferença em relação ao UTC

    • Atualizações são feitas, e o changelog fica armazenado no git
    • Dá para expressar isso como diff^4
  • Uma diferença de 30 minutos no horário de verão não é o fuso horário mais estranho

    • Os fusos Antarctica/Troll, Marrocos e Gaza têm regras que os sistemas não conseguem representar
    • Segundos intercalares não são úteis para programadores e, na maioria das vezes, são ignorados