N-ésimo dia da semana do mês
A terceira segunda-feira de março de 2024 é o dia 18, e a última sexta-feira de fevereiro de 2024 é o dia 23. Escolha ano, mês, dia da semana e da primeira à quinta ou a última para datar feriados móveis ou reuniões mensais. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Ano
- 2.024
- Mês
- 3
- Dia da semana alvo
- monday
- Ordinal da ocorrência
- 3
- Índice do dia da semana
- 1
- Índice do ordinal
- 3
- Dia
- 18
- Data
- 2024-03-18
Agendas de reuniões, calendários de pagamento, feriados e eventos sociais recorrentes costumam ser definidos como a segunda terça-feira ou a última sexta-feira de um mês específico, e não como um número de dia fixo. Traduzir essa regra humana para uma data gregoriana concreta exige saber quais dias da semana caem dentro do mês, como os anos bissextos esticam fevereiro e se uma quinta ocorrência realmente cabe antes do fim do mês. Esta calculadora aceita um ano, um mês de um a doze, um nome de dia da semana ou índice de base zero e um ordinal de primeiro a quinto ou último, e retorna a data civil ISO dessa ocorrência. Quando a posição solicitada não existe — por exemplo uma quinta segunda-feira em um mês que só contém quatro segundas-feiras — a requisição falha com um erro de validação claro, em vez de inventar uma data no mês seguinte.
Como o n-ésimo dia da semana de um mês é resolvido sem relógio
Comece com quatro peças de intenção: um ano gregoriano no intervalo prático de um a nove mil novecentos e noventa e nove, um mês numerado de um para janeiro até doze para dezembro, um dia da semana alvo e um ordinal que significa primeiro, segundo, terceiro, quarto, quinto ou último. Confirme as regras de ano bissexto para fevereiro com o teste gregoriano padrão: um ano é bissexto quando é divisível por quatro, exceto que anos seculares só são bissextos quando também são divisíveis por quatrocentos.
Isso decide se fevereiro tem vinte e oito ou vinte e nove dias e, portanto, quantos de cada dia da semana podem aparecer. A partir desse dia da semana do primeiro do mês, o número do dia da primeira ocorrência do dia da semana alvo é um mais a distância modular até o alvo. Cada ocorrência posterior é sete dias de calendário depois.
A contagem de ocorrências é quantas vezes você pode somar sete sem sair do comprimento do mês. Para um ordinal numérico n, o dia é a primeira ocorrência mais n menos um vezes sete, e a requisição é rejeitada quando n excede a contagem. Para último, n é definido como a contagem total, de modo que o último dia correspondente do mês é retornado.
Formate o resultado como uma string ISO quatro-dois-dois.
Onde calendários de n-ésimo dia da semana aparecem no trabalho real
Feriados no estilo dos Estados Unidos, como o Dia de Ação de Graças (quarta quinta-feira de novembro) e o Dia do Trabalho (primeira segunda-feira de setembro), são definidos por ordinais de dia da semana em vez de números de dia fixos, portanto calendários de folha de pagamento e escolares precisam resolvê-los para cada ano. Reuniões gerais corporativas costumam cair na segunda terça-feira de cada mês, e trens de lançamento de produto podem sair na última sexta-feira.
Sistemas bancários e de liquidação codificam cortes recorrentes como regras de dia-da-semana-no-mês que devem permanecer estáveis ao longo de anos bissextos e viradas de século. Engenheiros de dados materializam tabelas de dimensão de datas de feriados e reuniões para análises sem puxar uma biblioteca completa de iCalendar para um caminho de função pura.
Se mais tarde você precisar somar um número arbitrário de dias de calendário a uma data, calcular ordinais de dia do ano, descobrir em qual trimestre uma data cai ou inverter o problema e perguntar qual ocorrência uma determinada data é, trate esses casos como intenções de busca e páginas de destino separadas, em vez de sobrecarregar esta página de n-ésimo dia da semana do mês.
Casos de uso
Feriados definidos por ordinais de dia da semana
Resolva o Dia de Ação de Graças, o Dia do Trabalho, o Memorial Day e regras semelhantes em datas ISO concretas para qualquer ano, sem tabelas fixas no código.
Reuniões recorrentes de equipe e cadências de lançamento
Transforme políticas de "segunda terça-feira" ou "última sexta-feira do mês" em datas de calendário para convites, congelamentos de CI e relatórios de status.
Cortes de folha de pagamento e liquidação
Materialize cortes de dia-da-semana-no-mês para pipelines financeiros com matemática gregoriana segura para anos bissextos e erros claros quando falta uma quinta ocorrência.
Perguntas frequentes
O que significa n-ésimo dia da semana do mês?
Significa a data do primeiro, segundo, terceiro, quarto, quinto ou último dia da semana nomeado dentro de um determinado mês do calendário — por exemplo, a terceira segunda-feira de março de 2024 é 2024-03-18.
O que acontece se a quinta ocorrência não existir?
O erro informa quantas ocorrências daquele dia da semana o mês realmente tem.
Como peço a última sexta-feira de um mês?
A data da resposta é a última sexta-feira que ainda cai dentro daquele mês.
Ele lida com anos bissextos?
Sim. As regras gregorianas de ano bissexto se aplicam, então fevereiro pode ter vinte e nove dias e pode conter cinco de alguns dias da semana.
Quanto custa?
A ferramenta do navegador é gratuita e roda localmente.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/date/nth-weekday-of-month \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"year":2024,"month":3,"weekday":"monday","ordinal":"3"}'const res = await fetch("https://api.kit.forhosting.com/date/nth-weekday-of-month", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"year": 2024,
"month": 3,
"weekday": "monday",
"ordinal": "3"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/nth-weekday-of-month",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"year": 2024,
"month": 3,
"weekday": "monday",
"ordinal": "3"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/nth-weekday-of-month", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"year":2024,"month":3,"weekday":"monday","ordinal":"3"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"year":2024,"month":3,"weekday":"monday","ordinal":"3"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/nth-weekday-of-month", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"year": 2024,
"month": 3,
"weekday": "monday",
"ordinal": "3"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.nth_weekday_of_month",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
O que você envia e o que recebe de volta
Verificações clássicas incluem a terceira segunda-feira de março de dois mil e vinte e quatro caindo no dia dezoito, a última sexta-feira de fevereiro de dois mil e vinte e quatro caindo no dia vinte e três e a quinta quinta-feira de fevereiro de dois mil e vinte e quatro caindo no dia vinte e nove, porque aquele fevereiro bissexto tem cinco quintas-feiras. Envie quatro campos obrigatórios: year como um ano inteiro finito, month como um inteiro de um a doze, weekday como um nome em inglês como monday ou como um inteiro de zero a seis com domingo igual a zero, e ordinal como um a cinco, as palavras first a fifth ou a string last (também aceita como menos um). Campos ausentes, anos ou meses não inteiros, tokens de dia da semana desconhecidos, ordinais fora de um a cinco que não sejam last e pedidos de uma ocorrência que não existe naquele mês — tudo isso falha com invalid_input e não é cobrado. Em caso de sucesso, a resposta ecoa year, month, o nome normalizado do dia da semana e weekday_index, o ordinal como número ou a string last, ordinal_index como o número de ocorrência resolvido de base um, day do mês, a string de data ISO, occurrence_count com quantas vezes aquele dia da semana aparece no mês, is_leap_year para o ano, days_in_month e uma string curta formula documentando as regras de ano bissexto e de Sakamoto. O preço das chamadas de API bem-sucedidas é a base publicada de US$ 0,002 por item; falhas de validação não consomem saldo pré-pago.
Onde calendários de n-ésimo dia da semana aparecem no trabalho real
Como esta capacidade é um motor parse puro, o preço da API é a base publicada de US$ 0,002 por item bem-sucedido e a validação com falha não consome saldo.