Adicionar trimestres a uma data com ajuste no fim do mês
Esta calculadora desloca uma data ISO explícita por um número inteiro, positivo ou negativo, de trimestres.
Executar grátis
Cada trimestre corresponde exatamente a três meses civis: um trimestre depois de 30 de novembro cai em fevereiro do ano seguinte, enquanto quatro trimestres avançam um ano civil. Se o dia original não existir no mês de destino, ele será ajustado para o último dia válido. O cálculo usa aritmética gregoriana determinística em termos de UTC, sem o objeto Date do JavaScript, relógio, conversão de fuso horário, rede ou aleatoriedade. O senhor ou a senhora pode executá-lo gratuitamente no navegador ou usar a API por US$ 0,002 por solicitação bem-sucedida quando precisar de uma saída estruturada e repetível em um fluxo automatizado.
O que significa adicionar trimestres civis
Um trimestre civil é um bloco de três meses consecutivos, e não uma duração fixa em dias, horas ou segundos. Ao adicionar um trimestre, o mês avança três posições e o número do dia é preservado sempre que existir no destino. Quatro trimestres avançam doze meses e normalmente chegam ao mesmo mês e dia do ano seguinte. A data deve seguir rigorosamente YYYY-MM-DD e representar um dia gregoriano real; quarters deve ser inteiro. Valores positivos avançam, negativos retrocedem e zero mantém a data. Essa definição evita tratar um trimestre como noventa dias, pois períodos reais variam conforme o tamanho dos meses e os anos bissextos. A resposta informa a origem normalizada, a quantidade de trimestres, a data ISO resultante e seus componentes, os meses equivalentes, se houve ajuste e o tamanho do mês de destino. Nenhum horário é aceito ou inferido, pois a pergunta é de calendário civil, não de tempo decorrido. Assim, o resultado permanece igual em qualquer local de execução ou fuso horário do solicitante.
Como funcionam a validação e o ajuste de fim de mês
Primeiro, a calculadora exige quatro dígitos para o ano, dois para o mês e dois para o dia, separados por hífens. Depois valida o calendário gregoriano: o mês deve ir de 01 a 12, o dia deve existir nele e 29 de fevereiro só é aceito em anos divisíveis por quatro, exceto séculos não divisíveis por quatrocentos. O algoritmo converte ano e mês em um índice inteiro, multiplica os trimestres com sinal por três, soma o deslocamento e recupera o ano e o mês de destino. Em seguida, compara o dia original com a quantidade de dias desse mês. Se couber, ele permanece; caso contrário, vira o último dia e clamped será true. Por exemplo, 30 de novembro mais um trimestre chega a 28 de fevereiro em ano comum ou 29 em ano bissexto. A operação rejeita resultados fora dos anos 0001 a 9999. Todas as etapas usam inteiros finitos, sem Date, relógio, nomes de meses locais ou regras de fuso dependentes da implementação.
Usos práticos e integração reproduzível
O deslocamento por trimestres aparece em relatórios financeiros, renovações, revisões de conformidade, previsões, ensino e testes de software. Uma equipe financeira pode projetar a próxima revisão a partir de um fechamento trimestral sem trocar silenciosamente um trimestre por noventa dias. Equipes de produto podem avançar uma renovação e verificar se um mês curto alterou o dia. Analistas podem criar limites de coortes, e desenvolvedores podem gerar dados de teste com comportamento idêntico em todos os ambientes. Números negativos ajudam a reconstruir datas comparáveis de um ou quatro trimestres anteriores. Como a entrada traz uma data completa e o mecanismo nunca consulta a hora atual, a mesma solicitação sempre gera a mesma resposta. Isso favorece CI, cache, documentação reproduzível e processos auditados. A execução no navegador é gratuita; pela API, cada item bem-sucedido custa US$ 0,002, e entradas inválidas são rejeitadas. Use outra ferramenta para dias decorridos exatos ou calendários de trabalho. Esta capacidade concentra-se em adicionar trimestres inteiros de três meses, preservar o dia quando possível e ajustá-lo previsivelmente quando necessário.
Casos de uso
Planejamento de renovações trimestrais
Avance um contrato ou aniversário de assinatura por um ou mais períodos civis de três meses com comportamento explícito no fim do mês.
Comparações de relatórios
Retroceda um ou quatro trimestres para criar datas reproduzíveis de comparação com o trimestre ou ano anterior.
Dados de teste de calendário
Gere saídas ISO determinísticas para anos bissextos, mudanças de ano e meses curtos sem usar Date.
Perguntas frequentes
Qual é a duração de um trimestre nesta calculadora?
Um trimestre corresponde exatamente a três meses civis; não equivale a noventa dias nem a uma quantidade fixa de segundos.
É possível subtrair trimestres?
Sim. Informe um inteiro negativo em quarters para retroceder. O resultado deve permanecer entre os anos 0001 e 9999.
O que acontece se o mês de destino não tiver o dia original?
O dia é ajustado ao último dia válido do mês de destino, e o campo clamped da resposta passa a true.
O cálculo usa fuso horário ou a data atual?
Não. A entrada é uma data explícita e o cálculo usa aritmética inteira determinística, sem Date, relógio ou conversão de fuso.
Quanto custa uma solicitação pela API?
A execução no navegador é gratuita. Uma solicitação bem-sucedida pela API custa US$ 0,002; entradas inválidas ou fora do intervalo são rejeitadas.
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/add-quarters \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"date":"2024-11-30","quarters":1}'const res = await fetch("https://api.kit.forhosting.com/date/add-quarters", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"date": "2024-11-30",
"quarters": 1
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/add-quarters",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"date": "2024-11-30",
"quarters": 1
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/add-quarters", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"date":"2024-11-30","quarters":1}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"date":"2024-11-30","quarters":1}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/add-quarters", 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-11-30",
"quarters": 1
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.add_quarters",
"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.
Limites
year_min | 1 |
year_max | 9999 |
quarters_min | -39996 |
quarters_max | 39996 |
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. |