Números de semana ISO explicados — por que o dia 1 de janeiro às vezes cai na semana 52
A maioria das pessoas assume que a semana 1 é a primeira semana de janeiro. Não é — pelo menos não no padrão ISO 8601, o padrão internacional usado na maior parte da Europa, na indústria, em emissoras e em softwares corporativos no mundo todo.
No ISO 8601, a semana 1 é a semana que contém a primeira quinta-feira do ano. Essa única regra define tudo, inclusive alguns resultados que parecem “errados” até você entender a lógica.
As quatro regras da numeração de semanas ISO
Tudo decorre de quatro fatos:
1. As semanas sempre vão de segunda a domingo 2. A semana 1 é a semana que contém a primeira quinta-feira do ano 3. Um ano tem 52 ou 53 semanas 4. O número da semana pertence ao ano que contém a quinta-feira — não a segunda-feira
Esse último ponto é o que mais confunde. O ano ao qual a semana “pertence” é determinado por onde cai a quinta-feira, não por onde cai a maioria dos dias.
Por que quinta-feira?
A regra da quinta-feira existe porque garante que a semana 1 sempre contenha pelo menos 4 dias do novo ano. Ela também é equivalente a dizer: a semana 1 é a semana que contém o dia 4 de janeiro (já que 4 de janeiro sempre está na primeira semana por essa definição).
Efeito prático: se o dia 1 de janeiro cair em uma sexta, sábado ou domingo, ele faz parte da última semana do ano anterior — porque a quinta-feira daquela semana está em dezembro.
Casos de borda na virada do ano
Aqui é onde fica interessante:
O dia 1 de janeiro pode cair na semana 52 ou 53 do ano anterior.
Se 1 de janeiro é sexta: a quinta-feira daquela semana é 31 de dezembro. A semana pertence ao ano anterior. Se 1 de janeiro é sábado: a quinta-feira é 30 de dezembro. Mesma coisa — ano anterior. Se 1 de janeiro é domingo: a quinta-feira é 28 de dezembro. Ainda o ano anterior.
Nesses casos, 1, 2 ou até 3 de janeiro podem carregar o número de semana do ano anterior.
O dia 31 de dezembro pode cair na semana 1 do ano seguinte.
Se 31 de dezembro for segunda, terça ou quarta: a quinta-feira daquela semana cai em janeiro. A semana pertence ao próximo ano.
| Dia da semana em 1º de janeiro | Início da semana 1 | 1º de janeiro está na semana |
|---|---|---|
| Segunda | 1º de janeiro | 1 |
| Terça | 31 de dezembro | 1 |
| Quarta | 30 de dezembro | 1 |
| Quinta | 29 de dezembro | 1 |
| Sexta | 4 de janeiro | 52 ou 53 do ano anterior |
| Sábado | 3 de janeiro | 52 ou 53 do ano anterior |
| Domingo | 2 de janeiro | 52 ou 53 do ano anterior |
Quantas semanas há em um ano?
A maioria dos anos tem 52 semanas. Alguns têm 53.
Um ano ganha a 53ª semana quando 1º de janeiro cai numa quinta-feira (em qualquer ano), ou quando 1º de janeiro cai numa quarta-feira em ano bissexto. Aproximadamente 71% dos anos têm 52 semanas; cerca de 29% têm 53.
Anos com 53 semanas no passado recente e no futuro próximo: 2004, 2009, 2015, 2020, 2026, 2032.
Semanas ISO vs. numeração de semanas estilo EUA
O sistema dos EUA — e sistemas que o seguem — definem a semana 1 de outra forma: é simplesmente a semana que contém 1º de janeiro. As semanas vão de domingo a sábado.
Isso gera resultados diferentes, especialmente perto da virada do ano:
| Data | Semana ISO | Semana EUA |
|---|---|---|
| 1º de janeiro de 2023 (domingo) | Semana 52 de 2022 | Semana 1 de 2023 |
| 1º de janeiro de 2024 (segunda) | Semana 1 de 2024 | Semana 1 de 2024 |
| 31 de dezembro de 2024 (terça) | Semana 1 de 2025 | Semana 53 de 2024 |
No SQL Server, DATEPART(week, ...) por padrão segue o sistema dos EUA. No Excel, WEEKNUM() por padrão também é estilo EUA. No PostgreSQL, EXTRACT(week ...) segue ISO. No Python, isocalendar() é ISO. No JavaScript não há função nativa — você calcula manualmente ou usa uma biblioteca.
Esse descompasso cria bugs sutis quando números de semana transitam entre sistemas. Se um relatório gerado no Excel for comparado com dados de uma consulta no PostgreSQL perto de dezembro ou janeiro, os números de semana podem não bater.
Usos práticos dos números de semana ISO
Indústria e cadeia de suprimentos
Semanas ISO são a “língua franca” do planejamento de produção. Um cronograma de fábrica para “W14” significa a mesma coisa para um fornecedor na Alemanha, uma equipe de logística na Holanda e um relatório de qualidade no Reino Unido. O número da semana é inequívoco; datas de calendário nem sempre.
Radiodifusão
Audiências, inserções publicitárias e grades de programação costumam ser organizadas por número de semana. Uma campanha de “Semana 1” começa na segunda-feira da semana 1 ISO — ponto final. Isso permite coordenação internacional sem ficar convertendo datas.
Planejamento de projetos
Muitas ferramentas corporativas (SAP, Jira, Microsoft Project) exibem cronogramas em semanas ISO. Sprints, janelas de entrega e planejamento de capacidade se beneficiam de um sistema consistente que não “reinicia” no meio da semana.
Relatórios financeiros
Algumas empresas alinham relatórios trimestrais a semanas ISO em vez de meses do calendário, porque semanas ISO criam períodos de mesma duração. Trimestres de 13 semanas (ciclos 4+4+5) são comuns no varejo.
Agricultura e produção de alimentos
“Consumir preferencialmente antes da semana 32” em um produto embalado segue a numeração ISO. O formato ano-semana YYYY-Www (ex.: 2024-W32) é um formato de data válido no ISO 8601 e aparece em rótulos, lotes e controle de validade na indústria de alimentos.
Como escrever datas por semana ISO
O ISO 8601 define uma notação padrão para “week dates”:
YYYY-Www-D
Onde:
YYYYé o ano ISO da semana (que pode diferir do ano do calendário na virada)Wwwé o número da semana, com zero à esquerda, prefixado por WDé o número do dia: 1 = segunda, 7 = domingo
Exemplos:
2024-W01-1= segunda-feira da semana 1 ISO de 2024 (1º de janeiro de 2024)2024-W53-5= sexta-feira da semana 53 ISO de 2024 (3 de janeiro de 2025)2026-W01-4= quinta-feira da semana 1 ISO de 2026 (1º de janeiro de 2026)
Note que 2024-W53-5 pertence ao ano-semana ISO 2024, mesmo que a data caia em janeiro de 2025. Isso é “ano ISO da semana”, não o ano do calendário.
Como calcular números de semana ISO
A fórmula é bem definida, mas não é trivial de implementar sem erros. A abordagem geral:
1. Encontre a quinta-feira da semana que contém a data (some ou subtraia dias até cair na quinta) 2. Determine a qual ano pertence essa quinta-feira 3. Conte quantas semanas há entre 4 de janeiro daquele ano e essa quinta-feira (porque 4 de janeiro sempre está na semana 1)
Na prática, use o que já existe na sua linguagem:
// Python — returns (year, week, weekday)
from datetime import date
date(2024, 12, 31).isocalendar()
# IsoCalendarDate(year=2025, week=1, weekday=2)
// JavaScript — no built-in, manual calculation
function isoWeek(date) {
const d = new Date(date)
d.setHours(0, 0, 0, 0)
d.setDate(d.getDate() + 3 - (d.getDay() + 6) % 7)
const week1 = new Date(d.getFullYear(), 0, 4)
return 1 + Math.round(((d - week1) / 86400000 - 3 + (week1.getDay() + 6) % 7) / 7)
}
// PostgreSQL
SELECT EXTRACT(week FROM DATE '2024-12-31');
-- Returns 1 (ISO week 1 of 2025)
// SQL Server — ISOWK is ISO-compliant
SELECT DATEPART(isowk, '2024-12-31');
Erros comuns
Usar o ano do calendário em vez do ano ISO da semana. 31 de dezembro de 2024 está na semana 1 de 2025, não na semana 53 de 2024. Se você rotular como “2024-W01”, o ano está errado.
Assumir que a semana 1 começa em 1º de janeiro. Não começa. Muitas vezes 1º de janeiro nem está na semana 1.
Misturar semanas estilo EUA e ISO no mesmo relatório. Se uma fonte usa ISO e outra usa estilo EUA, você terá divergências silenciosas perto do fim/início do ano.
Off-by-one na contagem de semanas. Algumas implementações retornam semana 0 no começo de janeiro quando a data pertence ao ano anterior. O correto é o número de semana do ano anterior, não 0.
O que “W01” significa na prática
A forma mais simples de lembrar: a semana 1 ISO é a primeira semana do ano que tem a maioria dos dias no novo ano. Maioria significa pelo menos 4 de 7 dias.
Uma semana que atravessa dezembro e janeiro pertence ao ano que fica com mais dias. A quinta-feira é o dia do meio numa semana de 7 dias começando na segunda, por isso ela funciona como desempate.
Verificando o número de semana de qualquer data
A ISO Week Number Calculator mostra o número de semana para qualquer data, incluindo o intervalo completo de segunda a domingo daquela semana e o calendário completo do ano. Você também pode ver o número de semana ISO de hoje diretamente na página de current week number.