Metodologia de Data e Hora — Calendários, Dias da Semana e Normas ISO | MrCalculators

Metodologia de Data e Hora

As nossas ferramentas de data e hora apoiam-se no calendário gregoriano proléptico, na regra de Zeller para o dia da semana e na ISO 8601 para representação e numeração de semanas. Esta página documenta as fórmulas que aplicamos, as normas que seguimos e os casos extremos (dias bissextos, segundos intercalares, transições da hora de verão, convenções locais de dias da semana) que tratamos explicitamente, para que os resultados se mantenham reprodutíveis e verificáveis.

Fórmulas e regras que utilizamos

Congruência de Zeller para o dia da semana

Para mapear uma data gregoriana num dia da semana sem iteração, usamos a congruência de Zeller: h = (q + floor(13(m+1)/5) + K + floor(K/4) + floor(J/4) + 5J) mod 7, sendo janeiro e fevereiro tratados como meses 13 e 14 do ano anterior. O resultado é depois normalizado para a numeração ISO, em que segunda-feira é 1 e domingo é 7.

Formato de data ISO 8601

Apresentamos as datas canónicas como AAAA-MM-DD e as combinações data-hora como AAAA-MM-DDTHH:MM:SS com um desvio explícito (Z para UTC, ±HH:MM caso contrário). Este formato é inequívoco entre idiomas, ordena-se lexicograficamente em ordem cronológica e corresponde ao formato que a maioria das APIs e bases de dados armazena nativamente.

Contagem de dias úteis

Os dias úteis excluem sábado e domingo. Permitimos ao utilizador excluir opcionalmente uma lista de feriados, aplicada após o filtro de fim de semana. Em intervalos que cobrem meses ou anos, contamos por iteração de semanas inteiras mais um resto, para que intervalos muito longos permaneçam em O(1) por cálculo, em vez de percorrer todos os dias.

Numeração de semanas ISO

As semanas ISO começam à segunda-feira e a semana 1 do ano é a que contém a primeira quinta-feira (de forma equivalente, a que contém o dia 4 de janeiro). Assim, os anos têm 52 ou 53 semanas ISO, e os primeiros ou últimos dias de um ano gregoriano podem pertencer a um ano-semana ISO adjacente. Identificamos tais datas como AAAA-Www-D usando o ano-semana ISO, e não o ano civil.

UTC e política de segundo intercalar

Todos os instantes são armazenados em UTC. O UTC é mantido pelo BIPM em cooperação com os laboratórios nacionais de tempo, e os segundos intercalares são anunciados pelo Boletim C do IERS quando necessário, para manter o UTC dentro de 0,9 segundos do UT1. A nossa aritmética de duração assume 86 400 segundos SI por dia e não insere segundos intercalares, o que está alinhado com o comportamento do tempo POSIX e da maioria dos sistemas operativos.

Como revemos e atualizamos

A lógica do calendário é coberta por testes unitários que incluem anos bissextos (1900, 2000, 2024), fronteiras de ano-semana ISO (29 de dezembro a 3 de janeiro) e dias de mudança da hora de verão em ambos os hemisférios. Quando o IERS anuncia um novo segundo intercalar, atualizamos a documentação interna, mas mantemos a aritmética UTC inalterada, porque a expectativa dos utilizadores para dias e horas decorridos coincide com o modelo POSIX. Reverificamos esta página de metodologia após cada alteração à ISO 8601 e, no mínimo, uma vez por ano civil.

Erros comuns

  • Tratamento de segundos intercalares. Um segundo intercalar acrescenta 23:59:60 UTC no último dia de junho ou de dezembro, quando é inserido. Como a nossa aritmética de duração trata cada dia como 86 400 segundos (à semelhança do POSIX), as diferenças que atravessam um dia com segundo intercalar ficam um segundo afastadas de uma contagem real em segundos SI. Para o calendário do dia a dia isto é invisível; para cronometria científica de subsegundo, consulte uma fonte de tempo com conhecimento do IERS.
  • Numeração de semanas ISO vs EUA. A semana 1 ISO é a da primeira quinta-feira e as semanas começam à segunda-feira. A convenção dos EUA trata frequentemente a semana 1 como a que contém 1 de janeiro e começa as semanas ao domingo. Estes dois sistemas divergem com frequência em uma semana, em janeiro e dezembro, pelo que deve confirmar sempre qual a numeração usada por um relatório antes de comparar valores.
  • Dias de transição da hora de verão. Em dias de avanço para a hora de verão, um dia local tem 23 horas; em dias de recuo tem 25. Cálculos feitos em hora local podem assim originar um erro de uma hora, e uma marca temporal como 02:30 no dia de recuo é ambígua. Evitamo-lo realizando toda a aritmética em UTC e convertendo para hora local apenas na apresentação.
  • Dia da semana local vs ISO. A numeração ISO atribui 1 à segunda-feira e 7 ao domingo. Muitas convenções locais e configurações por defeito de folhas de cálculo numeram domingo como 1 e sábado como 7. Misturar as duas ao construir fórmulas (por exemplo, em contagens de dias úteis) desloca silenciosamente os resultados em um dia, pelo que indicamos sempre qual a numeração esperada na entrada.
  • Gregoriano proléptico para datas históricas. Antes de 1582 na maior parte da Europa (e mais tarde em alguns países), vigorava o calendário juliano. As nossas ferramentas estendem a regra gregoriana para trás por consistência aritmética, o que significa que uma data 'histórica' introduzida não corresponderá à data registada nos documentos da época. Em Portugal, a transição para o gregoriano ocorreu em outubro de 1582 (5 a 14 de outubro de 1582 não existem nos registos civis e eclesiásticos da época). Trate os resultados anteriores a 1582 como uma convenção matemática, não como uma afirmação histórica.

Glossário

UTC
Tempo Universal Coordenado, o padrão de tempo principal, mantido pelo BIPM em colaboração com laboratórios nacionais de cronometria.
UT1
Escala de tempo baseada no ângulo de rotação da Terra. O UTC é mantido dentro de 0,9 segundos do UT1 através de segundos intercalares.
Segundo intercalar
Segundo extra inserido no UTC, anunciado pelo Boletim C do IERS, para manter o UTC alinhado com o UT1.
Ano bissexto
Ano gregoriano de 366 dias. Divisível por 4, exceto anos seculares, que têm de ser também divisíveis por 400.
ISO 8601
Norma internacional para representar datas, horas, durações e intervalos de forma neutra em relação à localização.
Data semana ISO
Formato AAAA-Www-D em que a semana 1 é a que contém a primeira quinta-feira e segunda-feira é o dia 1.
Ano-semana
Ano a que pertence uma dada semana ISO. Pode diferir do ano gregoriano nas proximidades de 1 de janeiro ou de 31 de dezembro.
Calendário gregoriano proléptico
Calendário gregoriano estendido para trás no tempo, antes da sua adoção em 1582, usado para consistência aritmética.
Calendário juliano
Calendário em uso geral na Europa antes de 1582, com uma regra de ano bissexto mais simples (de quatro em quatro anos).
Congruência de Zeller
Expressão aritmética de forma fechada que devolve o dia da semana de qualquer data gregoriana sem iteração.
Tempo POSIX
Segundos decorridos desde 1970-01-01T00:00:00Z, ignorando segundos intercalares. Base da maioria dos relógios dos sistemas operativos.
Hora de verão (DST)
Convenção de hora local que desloca os relógios em uma hora durante parte do ano, produzindo dias locais de 23 e 25 horas nas transições.
Desvio horário
Diferença com sinal entre uma hora local e o UTC, escrita como ±HH:MM (por exemplo, +01:00).
BIPM
Bureau International des Poids et Mesures, organismo intergovernamental que mantém o UTC e o segundo SI.
IERS
International Earth Rotation and Reference Systems Service, que monitoriza a rotação da Terra e anuncia os segundos intercalares.