Primeiro e último dia do ano
Para 15 de junho de 2024, o ano vai de 2024-01-01 a 2024-12-31 e tem 366 dias por ser bissexto. Use essas duas datas como limites prontos para relatórios anuais, filtros, pastas de arquivo ou etiquetas de retenção. 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-06-15
- Ano
- 2.024
- Primeiro dia
- 2024-01-01
- Último dia
- 2024-12-31
- Dias do ano
- 366
Esta calculadora recebe uma data ISO explícita e devolve os dois limites inclusivos do mesmo ano civil. Ela é útil quando um relatório, filtro, arquivo ou regra de validação precisa de 1º de janeiro e 31 de dezembro sem consultar o relógio atual. Antes de produzir o resultado, a entrada é validada como uma data gregoriana real, inclusive pelas regras seculares dos anos bissextos. O retorno também identifica o ano, informa se ele é bissexto e apresenta o total de dias.
Como os limites do ano são obtidos
Informe uma data com exatamente quatro dígitos para o ano, dois para o mês e dois para o dia, separados por hífens. A calculadora separa esses componentes e os valida pelo calendário gregoriano proléptico. O mês deve estar entre 01 e 12, e o dia permitido depende do mês e do ano.
Fevereiro tem 29 dias quando o ano é divisível por quatro, mas anos seculares também precisam ser divisíveis por quatrocentos; portanto, 2000 é bissexto, 1900 não é e 2024 é. Depois que a existência da data é confirmada, apenas o componente do ano é necessário para formar os limites. O primeiro dia inclusivo é o ano de quatro dígitos seguido por 01-01, e o último é o mesmo ano seguido por 12-31.
Nenhum limite muda em ano bissexto: o dia adicional fica em fevereiro, enquanto 1º de janeiro e 31 de dezembro permanecem fixos. Esse método nunca pergunta qual é a data atual. Ele também evita o processamento pelo Date do ambiente, de modo que um servidor UTC, um navegador local e um worker de borda criam exatamente as mesmas strings ISO.
A operação é constante e não faz chamadas externas.
Validação da entrada e campos da resposta
Envie um objeto com o campo obrigatório date, por exemplo 2024-06-15. A sintaxe aceita é intencionalmente rígida: meses abreviados como 2024-6-15, datas com barras, timestamps, espaços externos e expressões localizadas são rejeitados. Essa rigidez impede que um analisador aparentemente conveniente interprete o mesmo texto de maneira diferente em duas máquinas.
A sintaxe não basta, por isso a capacidade também rejeita mês zero, mês treze, 31 de abril, 30 de fevereiro e 29 de fevereiro em ano comum. Uma resposta bem-sucedida repete a data validada e inclui year como inteiro. A data de entrada é sempre explícita e obrigatória; sua ausência nunca usa hoje como alternativa.
Isso mantém solicitações salvas, testes e rotinas históricas reproduzíveis muitos anos depois.
Como usar limites do ano civil com segurança
Os limites do ano civil são particularmente úteis em consultas anuais de bancos de dados, períodos de relatórios, pastas de documentos, rótulos de retenção e valores iniciais de seletores de data. Se outro sistema exigir timestamps, aplique explicitamente a política de fuso horário desse sistema após receber o resultado; não presuma que uma data terminada em 31 de dezembro represente automaticamente o mesmo instante final em todos os lugares.
Em intervalos de tempo semiabertos, um desenho comum usa o primeiro dia retornado como limite inferior inclusivo e calcula separadamente 1º de janeiro do ano seguinte como limite superior exclusivo. Esta capacidade devolve de propósito o último dia real do ano solicitado, pois esse é o objetivo da busca e a forma mais clara para agendas humanas. Ela não calcula anos fiscais, anos letivos, períodos móveis de doze meses, dias úteis nem o ano atual.
Esses conceitos exigem regras extras.
Casos de uso
Filtros de relatórios anuais
Converta qualquer transação datada em limites inclusivos de 1º de janeiro e 31 de dezembro para consultar um ano civil consistente.
Nomes de arquivos e pastas
Obtenha limites anuais estáveis a partir da data de um registro, sem depender do ano atual da máquina nem de seu fuso horário.
Perguntas frequentes
A calculadora usa o ano atual?
Não. Ela exige uma data ISO explícita e usa somente o ano contido nessa entrada, portanto o relógio atual não afeta a resposta.
Qual formato a data deve ter?
Use YYYY-MM-DD estrito, com componentes de largura fixa, como 2024-06-15. Timestamps, barras, componentes abreviados e datas impossíveis são rejeitados.
Um ano bissexto muda os limites retornados?
Não. O ano bissexto acrescenta 29 de fevereiro entre os limites.
O primeiro e o último dia entram no intervalo?
Sim. Tanto 1º de janeiro quanto 31 de dezembro fazem parte do intervalo, então você pode usá-los direto em um filtro de-até que inclua as duas pontas, sem somar nem tirar um dia.
Como uso essas datas quando trabalho com horários exatos?
Trate-as como dias do calendário, não como instantes, e aplique a sua própria regra de fuso. Se precisar de um intervalo que termine logo antes do ano seguinte, use 1º de janeiro desse ano como fim.
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/year-start-end \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"date":"2024-06-15"}'const res = await fetch("https://api.kit.forhosting.com/date/year-start-end", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"date": "2024-06-15"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/year-start-end",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"date": "2024-06-15"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/year-start-end", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"date":"2024-06-15"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"date":"2024-06-15"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/year-start-end", 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-06-15"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.year_start_end",
"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
Como os limites do ano são obtidos
O cálculo define days_in_year como 365 ou 366 e fornece o indicador is_leap_year.
Validação da entrada e campos da resposta
Os campos first_day e last_day são datas ISO inclusivas, prontas para filtros de intervalo com comparações maior ou igual e menor ou igual. A resposta ainda traz is_leap_year e days_in_year, úteis para dimensionar agendas anuais ou confirmar o tratamento bissexto sem um segundo cálculo. Uma entrada inválida gera invalid_input com uma explicação curta, sem avançar silenciosamente para outro mês ou ano. O navegador e a API compartilham a mesma função pura solve.
Como usar limites do ano civil com segurança
Trate first_day e last_day como datas civis, não como instantes. Uma solicitação API bem-sucedida custa US$ 0,002 por item; no navegador, o mesmo cálculo puro é local. Sem rede, relógio, aleatoriedade ou estado regional oculto, a mesma entrada sempre produz o mesmo JSON.
Casos de integração
Testes de regressão do calendário
Gere limites previsíveis e metadados bissextos para fixtures com anos comuns, bissextos e exceções seculares.
Perguntas técnicas
O primeiro e o último dia são inclusivos?
Sim. first_day é 1º de janeiro e last_day é 31 de dezembro do ano civil da data informada; ambos pertencem a esse ano.
Quanto custa uma solicitação API?
Uma solicitação API bem-sucedida custa US$ 0,002 por item. A versão no navegador executa gratuitamente o mesmo cálculo determinístico no dispositivo.