«Quantos dias há entre 10 e 12 de março?» A resposta pode ser dois, três ou um — e as três podem estar certas. A subtração é simples. A verdadeira questão é saber se a data inicial, a data final, ambas ou nenhuma entram na contagem.
Este guia apresenta um método repetível e também aborda anos bissextos, fins de mês, dias úteis, prazos, fusos horários e mudanças de hora. O objetivo não é apenas obter um número, mas o número que corresponde à pergunta real.
A resposta curta
Para duas datas sem hora, calcule primeiro a diferença normal: diferença = data final − data inicial. Depois aplique a regra dos limites:
- Tempo decorrido ou início excluído: use a diferença sem alterações.
- Contagem inclusiva: some 1 quando a data inicial e a final contam.
- Apenas dias interiores: subtraia 1 quando nenhum limite conta, sem descer abaixo de zero.
De 2026-03-10 a 2026-03-12, a diferença normal é 2 dias. Contando as duas datas, são 3; contando apenas as datas estritamente intermédias, é 1.
Quatro formas válidas de contar o mesmo intervalo
| Regra | Datas contadas | Resultado | Uso comum |
|---|---|---|---|
| Final menos início | 10→11, 11→12 | 2 dias | Duração do intervalo; noites |
| Ambas as datas incluídas | 10, 11, 12 | 3 datas | Presença, viagens, campanhas |
| Ambas as datas excluídas | Só o dia 11 | 1 dia interior | Algumas regras processuais |
Semiaberto [início, fim) | 10, 11 | 2 datas | Software, reservas, relatórios |
Um intervalo semiaberto inclui o início e exclui o fim. Evita sobreposições: uma reserva que termina no dia 12 e a seguinte que começa nesse dia não ocupam ambas o mesmo limite. Além disso, intervalos adjacentes somam-se sem ajustes.
Mesmo «inclusivo» é ambíguo se não indicar qual limite. Escreva explicitamente «incluir ambas as datas», «excluir a data inicial» ou «contar apenas os dias completos entre elas».
Diferença entre datas e tempo decorrido são perguntas diferentes
Uma data é um rótulo do calendário, não necessariamente um bloco de 24 horas. Em Europe/Madrid, da meia-noite local de 28 à de 30 de março de 2026 há dois dias de calendário, mas apenas 47 horas decorridas porque o relógio avança. De 24 a 26 de outubro há dois dias de calendário e 49 horas quando o relógio atrasa.
Se a pergunta é quantas datas do calendário existem, trabalhe com datas sem hora. Se é quanto tempo decorreu, compare instantes precisos e devolva horas, minutos ou segundos. Dividir a diferença entre timestamps por 86 400 pode dar um número errado de dias durante a mudança de hora.
Os modelos modernos separam os conceitos. A documentação de Temporal PlainDate trata a data civil separadamente do instante exato; o RFC 5545 explica por que durações em dias e semanas precisam de contexto de calendário nas mudanças de hora.
Um método fiável para datas sem hora
- Normalize a entrada. Confirme o calendário e use um formato inequívoco como
AAAA-MM-DD. - Mantenha datas como datas. Não acrescente silenciosamente meia-noite ou um fuso horário.
- Associe cada data a um número de dia. Uma biblioteca pode chamar-lhe ordinal ou dia desde a época.
- Subtraia. O número posterior menos o anterior dá a diferença com sinal.
- Aplique a regra dos limites. Inclua ou retire os extremos apenas depois da diferença base.
O sinal preserva a direção: de 10 a 12 de março dá +2; de 12 a 10 dá −2. Use o valor absoluto apenas quando a direção não importar. A nossa calculadora de diferença entre datas mostra anos, meses, semanas e dias sem transformar datas em timestamps.
Deixe os anos bissextos a cargo do calendário
| Início | Fim | Diferença normal | Ambas incluídas |
|---|---|---|---|
| 2024-02-28 | 2024-03-01 | 2 dias | 3 datas |
| 2025-02-28 | 2025-03-01 | 1 dia | 2 datas |
| 2026-01-01 | 2027-01-01 | 365 dias | 366 datas |
No calendário gregoriano, anos divisíveis por 4 são bissextos, exceto anos seculares que não sejam também divisíveis por 400. Boas bibliotecas já aplicam esta regra. Presumir sempre 365 dias por ano é menos fiável.
Meses e anos não têm um número fixo de dias
«Um mês depois de 31 de janeiro» exige uma política: limitar a 28 ou 29 de fevereiro, avançar para março ou rejeitar a data? Um ano depois de 29 de fevereiro também precisa de regra num ano não bissexto.
- 30 dias decorridos é uma duração fixa.
- Um mês de calendário mantém uma relação no calendário e exige política de fim de mês.
- A mesma data no mês seguinte pode não existir e precisa de alternativa explícita.
Quando um contrato ou interface diz «mensal», deve documentar o que acontece no fim do mês. Não substitua silenciosamente um mês de calendário por 30 dias.
Dias úteis exigem um calendário de trabalho
Um dia de semana não é automaticamente um dia útil. É preciso definir os dias normalmente trabalhados, país ou região, feriados públicos e internos com dias de substituição, tratamento do dia inicial e o que acontece se o resultado cair num dia não trabalhado.
Para uma contagem comum de segunda a sexta, use a nossa calculadora de dias úteis. Para salários, entregas contratuais, processos judiciais ou prazos regulados, aplicam-se o calendário e as regras que governam o caso real.
As regras de prazo podem substituir a contagem comum
Os prazos legais mostram por que não existe uma definição inclusiva universal. Segundo as regras gerais da UE, o dia do acontecimento inicial é normalmente excluído; fins de semana e feriados contam, salvo quando o período é expresso em dias úteis, e o fim pode ser transferido quando o último dia é feriado ou fim de semana. Consulte o Regulamento (CEE, Euratom) n.º 1182/71.
A Rule 6 das atuais Federal Rules of Civil Procedure dos EUA também exclui em geral o dia inicial, conta fins de semana e feriados intermédios e transfere o fim quando necessário. Em Inglaterra e no País de Gales, a Civil Procedure Rule 2.8 define «clear days» excluindo o dia inicial e o do evento, com regras adicionais para períodos curtos e tribunais fechados.
A nossa calculadora de prazos ajuda a explorar uma data, mas não decide qual regra jurídica se aplica.
Cinco perguntas antes de contar
- As entradas são datas ou instantes precisos?
- Quais limites contam? Registe separadamente a inclusão do início e do fim.
- Que calendário e fuso horário se aplicam?
- Os dias não trabalhados têm regras especiais?
- O que acontece nos limites difíceis? Teste o mesmo dia, ordem inversa, dia bissexto, fim de mês, fim de ano e mudança de hora.
Um conjunto compacto de casos-limite
| Caso | Resultado normal esperado | Erro detetado |
|---|---|---|
| 2026-03-10 → 2026-03-10 | 0 dias; inclusivo 1 | Tratamento do mesmo dia |
| 2026-03-12 → 2026-03-10 | −2 dias | Perda da direção |
| 2024-02-28 → 2024-03-01 | 2 dias | Dia bissexto omitido |
| 2025-02-28 → 2025-03-01 | 1 dia | Regra bissexta aplicada todos os anos |
| Madrid, 2026-03-28 → 2026-03-30 | 2 dias de calendário; 47 horas | Dias confundidos com blocos de 24 horas |
| 2026-01-31 + 1 mês | Depende da política definida | Mês tratado como 30 dias |
Em software, os testes devem indicar a convenção. «Dias entre datas» não é uma especificação; «excluir início e incluir fim em Europe/Madrid» é muito mais claro. A documentação oficial de datetime do Python distingue, por exemplo, a subtração de datas da aritmética de data e hora e das regras de fuso.
Que calculadora deve usar?
- Diferença entre datas para a distância no calendário.
- Dias úteis para retirar fins de semana comuns.
- Prazos para somar ou subtrair um número de dias.
- Calendário para verificar dias da semana e limites dos meses.
A ideia essencial
Não existe uma única resposta correta antes de definir os limites e o tipo de tempo. Comece pela diferença normal e indique depois os extremos, o sinal, o calendário, o fuso e eventuais regras laborais ou jurídicas. Uma frase adicional na especificação evita a maioria dos erros de um dia.