Domingo É O Primeiro Dia Da Semana - Domingo, o primeiro dia da semana
Domingo, o primeiro dia da semana

O problema de tratar domingo como primeiro dia

A maioria das pessoas no Brasil acha natural que segunda-feira seja o início da semana. O calendário escolar, o calendário comercial, a rotina das empresas — tudo gira em torno dessa ideia. Mas quando você trabalha com sistemas, bibliotecas e padrões internacionais, a realidade é outra. Muitos sistemas, por padrão, tratam o domingo como o primeiro dia da semana. Isso não é uma escolha arbitrária, é uma herança de padrões que vieram de fora e foram incorporados sem muita reflexão. Eu já perdi horas debuggando um sistema de escalas porque o módulo de datas estava configurado para começar na segunda, mas o banco de dados ia consultar usando a lógica de domingo como primeiro dia. O resultado eram agendamentos deslocados, relatórios errados e reuniões que ninguém aparecia porque a data estava incorreta. O problema era simples: duas partes do sistema interpretavam o que era "início da semana" de formas diferentes.

domingo é o primeiro dia da semana: o que isso significa na prática

No JavaScript, por exemplo, o método getDay() retorna 0 para domingo, 1 para segunda e assim por diante. Isso significa que, se você escrever um código que assume como primeiro dia, vai precisar ajustar explicitamente. A biblioteca date-fns, usada por muitos projetos, tem a opção weekStartsOn, que permite definir como primeiro dia. Sem essa configuração, o comportamento padrão segue a norma ISO 8601, que define segunda-feira como primeiro dia, mas o JavaScript puro segue a norma ECMA-262, que define domingo como primeiro dia. Duas normas, duas respostas diferentes para a mesma pergunta. Em Python, o calendar module tem o parâmetro setfirstweekday(), que permite trocar entre 0 (segunda) e 6 (domingo). Se você não definir isso, o padrão é segunda. Mas bibliotecas de terceiros podem ter comportamentos diferentes. O pandas, por exemplo, trata segunda como início padrão, mas ao ler dados de fontes americanas, as datas podem ser parseadas como se domingo fosse o início, gerando deslocamentos de um dia nos agrupamentos semanais.

No banco de dados, a coisa fica ainda mais confusa. O SQL Server retorna 1 para domingo quando você usa DATEPART(dw, data), mas esse valor depende da configuração SET DATEFIRST, que pode ser alterada no nível da sessão. Se seu application server e seu banco tiverem configurações diferentes, uma query simples de relatório semanal pode retornar dados completamente errados sem nenhuma mensagem de erro.

👉 Clique no botão abaixo para saber mais sobre o assunto!

Como lidar com isso no dia a dia

A solução mais segura é nunca assumir o padrão. Sempre deixe explícito qual dia você considera como início da semana. No JavaScript, use date-fns ou luxon em vez de manipular objetos Date diretamente. No Python, use pendulum ou pytz junto com calendar.setfirstweekday(0). No banco de dados, verifique a configuração SET DATEFIRST no início de cada conexão e sobrescreva se necessário. Uma dor específica que eu encontrei foi num projeto de folha de pagamento onde os horários de intervalo precisavam ser calculados com base na semana calendário, mas o sistema legado usava domingo como referência e o módulo novo usava segunda. O cálculo ficava deslocado todo mês, gerando pagamentos errados. A correção foi criar uma camada de adaptação que padronizava todas as chamadas para segunda como início, fazendo a conversão antes de passar para o sistema legado. Levou uma semana para identificar a raiz do problema e mais dois dias para implementar o fix.

Alternativas quando o padrão não funciona

Se você está construindo algo para um público brasileiro ou europeu, configure tudo para segunda-feira como início. Se for para o mercado norte-americano, mantenha domingo, mas deixe claro nos documentos internos e nos comentários do código. A pior coisa que pode acontecer é assumir que "todo mundo pensa igual" — e aí você gasta semanas corrigindo bugs que na verdade são problemas de configuração. Para projetos que precisam suportar múltiplas localidades, use timezones e locale-aware libraries. O formato ISO 8601 define segunda como primeiro dia, mas o padrão ISO-8601-2 de 2019 já traz flexibilidade para diferentes culturas. Ferramentas como Moment.js (embora em modo descontinuado) e suas substitutas modernas oferecem suporte nativo a essas variações. A diferença de tempo para configurar tudo corretamente desde o início é mínima comparada ao custo de refatorar depois.

O problema central é que domingo é o primeiro dia da semana em muitos contextos técnicos, mas não no contexto cultural brasileiro. Reconhecer essa divergência e tratá-la explicitamente no código evita a maioria dos problemas. Não adianta apenas saber que existe a diferença — tem que colocar isso em prática em cada camada do sistema, desde o banco até a interface do usuário.