Enésimo dia da semana após uma data
A partir da segunda-feira, 18 de março de 2024, a primeira segunda depois dela é 25 de março, não o mesmo dia, e a segunda é 1º de abril. Escolha data, dia da semana e ocorrência para transformar uma regra repetida em uma data exata. 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
- Data
- 2024-03-15
- Dia da semana
- Monday
- N
- 3
- Resultado
- 2024-04-01
- Dias depois
- 17
- Dia da semana base
- Friday
- Dia da semana resultante
- Monday
Esta calculadora transforma uma regra de recorrência em uma data inequívoca. Informe uma data ISO real no formato YYYY-MM-DD, escolha um dia da semana em inglês e indique qual ocorrência futura deseja. A busca começa estritamente depois da data fornecida: se a base e o alvo forem segunda-feira, a primeira ocorrência será a segunda-feira seguinte. O cálculo usa aritmética gregoriana inteira, sem JavaScript Date, relógio do sistema, localidade, rede ou aleatoriedade. Assim, o resultado permanece estável em automações UTC, testes, agendas e relatórios.
Entenda a regra estritamente posterior
A palavra estritamente define o comportamento: a data ISO informada é um limite e nunca pode ser devolvida. Se a base for 2024-03-18, uma segunda-feira, e o alvo também for segunda-feira, a primeira data válida será 2024-03-25; a segunda será 2024-04-01. Quando os dias diferem, o mecanismo avança pela menor distância positiva até o alvo e soma sete dias para cada ocorrência adicional.
Isso elimina a ambiguidade entre “na data ou depois” e “depois da data”. A resposta traz a base normalizada, o nome canônico do dia, a ocorrência solicitada, a data resultante, a distância total e os componentes civis. O cálculo trata dias gregorianos, não instantes com horas, fusos ou horário de verão.
Portanto, não ignora fins de semana ou feriados e não reinterpreta a entrada pelo fuso do aparelho. Regras inclusivas, dias úteis e feriados exigem ferramentas próprias. Nesta capacidade, somente as três entradas determinam uma resposta matemática exata.
Forneça data, dia e ocorrência válidos
Envie os três campos obrigatórios date, weekday e n. date deve ter quatro dígitos de ano, dois de mês e dois de dia separados por hífens, além de representar um dia gregoriano real. 2024-02-29 é válido; 2023-02-29 não é. Os anos aceitos vão de 0001 a 9999, e o resultado precisa permanecer nesse intervalo. weekday aceita nomes ingleses completos de Monday a Sunday e abreviações comuns como Mon, Tue, Wed, Thu, Fri, Sat e Sun, sem diferenciar maiúsculas.
Índices numéricos e nomes localizados são rejeitados para evitar interpretações variáveis. n começa em um, deve ser inteiro positivo e não pode passar de 100000. Strings formadas por dígitos funcionam em formulários, mas frações, zero, negativos, NaN, Infinity e textos alheios falham. Se uma ocorrência grande ultrapassar 9999-12-31, a falha também será explícita.
Automatize com aritmética gregoriana determinística
Primeiro, o solucionador valida o tamanho dos meses e a regra gregoriana de anos bissextos, incluindo a exceção dos séculos. Depois converte a data civil em um número inteiro de dia por uma transformação fechada. O dia semanal decorre desse número e de um mapa fixo.
A distância até o alvo é calculada módulo sete, mas zero vira sete para garantir a regra estritamente posterior. Sete vezes n menos um é somado para as ocorrências seguintes, e o total volta a ser convertido em ano, mês e dia. O processo tem tempo constante mesmo para n grande, pois não percorre datas intermediárias.
Ele tampouco cria JavaScript Date, lê o relógio, consulta serviços ou aplica dados de fuso horário. Isso garante resultados reproduzíveis em navegadores, workers, testes de linha de comando e integração contínua. Agendas, relatórios e suítes de teste podem produzir datas futuras sem congelar relógios.
A saída é uma data civil ISO, não um timestamp; o sistema consumidor pode anexar conscientemente sua própria hora e zona depois, sem pressupostos escondidos no cálculo.
Casos de uso
Agendar uma revisão recorrente
Encontre a terceira sexta-feira após um marco do projeto e salve a data ISO no fluxo de planejamento.
Criar dados de teste estáveis
Gere casos determinísticos sem congelar o relógio nem depender do fuso horário da máquina.
Definir datas de observação e relatório
Resolva o dia semanal de ordem n após uma medição para auditorias e pipelines repetíveis.
Perguntas frequentes
A data base conta se já cair no dia escolhido?
Não. O cálculo começa estritamente depois. Se ambos forem segunda-feira, a primeira ocorrência será sete dias depois.
Quais valores você pode usar em n?
Use um inteiro positivo de 1 a 100000. Frações, zero e números negativos são rejeitados.
Esta ferramenta usa seu fuso horário?
Não. Ela trabalha com datas civis gregorianas e inteiros, sem consultar fuso ou relógio do sistema.
Feriados ou dias não úteis são ignorados?
Não. Todas as semanas de sete dias contam. Calendários comerciais exigem outra capacidade.
Como encontro a terceira segunda-feira depois de uma data?
Digite a data, escolha segunda-feira e peça a ocorrência 3. A partir da sexta-feira, 15 de março de 2024, a resposta é 1º de abril de 2024, 17 dias depois, porque a primeira segunda seguinte é o dia 18.
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-from-date \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"date":"2024-03-15","weekday":"Monday","n":3}'const res = await fetch("https://api.kit.forhosting.com/date/nth-weekday-from-date", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"date": "2024-03-15",
"weekday": "Monday",
"n": 3
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/nth-weekday-from-date",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"date": "2024-03-15",
"weekday": "Monday",
"n": 3
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/nth-weekday-from-date", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"date":"2024-03-15","weekday":"Monday","n":3}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"date":"2024-03-15","weekday":"Monday","n":3}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/nth-weekday-from-date", 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
{
"date": "2024-03-15",
"weekday": "Monday",
"n": 3
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.nth_weekday_from_date",
"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
Você pode executar gratuitamente no navegador ou chamar a API por US$ 0,002 por item válido.
Forneça data, dia e ocorrência válidos
Uma entrada inválida gera invalid_input, sem ajustar silenciosamente datas impossíveis. Cada item válido na API custa US$ 0,002, e o navegador utiliza o mesmo solucionador puro.
Perguntas técnicas
Quanto custa uma solicitação API?
Cada item válido da API custa US$ 0,002. Você também pode usar o mesmo solucionador grátis no navegador.