Dias de fim de semana entre datas
Saber quantos dias de fim de semana caem entre duas datas do calendário é uma necessidade prática em planos de equipe, regras de hora extra, reservas de viagem, logística de eventos e cálculo de férias.
Executar grátis
Roda direto no seu navegador. Grátis, sem cadastro — seus dados não são enviados para lugar nenhum.
Quem busca um contador de sábados e domingos entre datas quer totais separados ou combinados, não um intervalo bruto de dias que ainda precise filtrar à mão. Esta ferramenta aceita duas datas ISO estritas no formato ano-mês-dia, valida se cada dia existe de fato no calendário gregoriano —incluindo fevereiros bissextos—, converte ambas em números de dia juliano astronômico com uma fórmula inteira pura e informa quantos sábados e domingos caem em cada dia civil da data mais cedo até a mais tarde, ambas inclusas. A ordem não altera os totais de fim de semana: o mesmo par produz os mesmos contagens de sábado e domingo se você listar o dia mais cedo primeiro ou segundo, enquanto a direção com sinal permanece disponível para pipelines cronológicos. Bases impossíveis como 29 de fevereiro em um ano comum falham com um erro de validação claro em vez de se ajustarem em silêncio. O widget gratuito do navegador e a API paga compartilham uma mesma função isomorfa pura, sem relógio do host e sem objeto Date de JavaScript, de modo que demos escolares e jobs de produção sempre concordam nos contagens de fim de semana.
Como usar
Insira os dados no formulário acima. A ferramenta os verifica antes de calcular e mostra o resultado na mesma página.
Confira os dados
Use os rótulos e as unidades indicados em cada campo. Se algo estiver ausente ou fora do intervalo permitido, a página mostra o que corrigir.
Repita o cálculo ou automatize
Use a ferramenta web para verificações individuais e a API quando precisar da mesma capacidade em um fluxo automatizado.
Casos de uso
Obtenha uma resposta agora
Insira um conjunto de valores e veja o resultado sem montar uma planilha ou um script.
Compare cenários
Altere um valor por vez e repita o cálculo para entender o que muda o resultado.
Automatize tarefas repetidas
Use a API quando precisar executar o mesmo cálculo dentro do seu produto ou fluxo.
Perguntas frequentes
Como usar esta capacidade?
Preencha os campos acima e execute nesta página. O formulário destaca qualquer dado que precise de correção.
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/weekend-count \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"start":"2024-01-01","end":"2024-01-31"}'const res = await fetch("https://api.kit.forhosting.com/date/weekend-count", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"start": "2024-01-01",
"end": "2024-01-31"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/weekend-count",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"start": "2024-01-01",
"end": "2024-01-31"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/weekend-count", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"start":"2024-01-01","end":"2024-01-31"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"start":"2024-01-01","end":"2024-01-31"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/weekend-count", 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
{
"start": "2024-01-01",
"end": "2024-01-31"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.weekend_count",
"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. |