Truncar data-hora a unidade
Leve uma data e hora ao início do seu ano, mês, dia, hora ou minuto em UTC: 2024-06-15T14:37:52Z truncada no dia vira 2024-06-15T00:00:00Z. Útil para relatórios diários, gráficos por hora e agrupamento de registros. 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 e hora
- 2024-06-15T14:37:52Z day
- Resultado
- 2024-06-15T00:00:00Z day
- Ano
- 2.024
- Mês
- 6
- Dia
- 15
Truncar um carimbo de tempo a uma unidade mais grossa é a base de buckets diários, relatórios mensais, gráficos horários e chaves de cache que precisam coincidir entre idiomas e hosts. Esta ferramenta de truncar data-hora a unidade aceita uma data-hora ISO-8601 explícita —hora completa com Z ou um deslocamento numérico, ou uma string só de data tratada como meia-noite UTC— mais uma unidade de ano, mês, dia, hora ou minuto. Normaliza a entrada para Tempo Universal Coordenado com aritmética gregoriana pura e zera todo campo menor que a unidade escolhida, de modo que o resultado seja um instante de piso UTC estável escrito como ano-mês-dia T hora-minuto-segundo Z. Dias de calendário impossíveis e unidades desconhecidas falham com erro de validação claro em vez de inventar um estouro.
Como o truncamento UTC funciona sem relógio do sistema
Comece com uma data-hora base explícita escrita na forma internacional ISO para que todo cliente concorde no mesmo ano, mês, dia e campos de relógio opcionais. Quando só uma data de calendário é fornecida, trate-a como meia-noite em Tempo Universal Coordenado. Quando há hora, aceite segundos fracionários opcionais truncados a segundos inteiros e uma Z final para UTC ou um deslocamento numérico de horas e minutos com sinal mais ou menos, subtraído ao converter para tempo absoluto.
Valide que o dia civil exista sob as regras de bissexto gregorianas —29 de fevereiro é legal só quando o ano é divisível por quatro, exceto que anos de século também devem sê-lo por quatrocentos— e que hora, minuto e segundo estejam nos intervalos usuais. Converta o triplo civil em um serial de dia com o algoritmo days-from-civil de Howard Hinnant, multiplique por oitenta e quatro mil e seiscentos segundos, some a hora local do dia e subtraia os minutos de deslocamento vezes sessenta para obter segundos de época UTC.
Reconstrua ano, mês, dia, hora, minuto e segundo UTC com civil-from-days. Aplique então um piso puro por unidade: year redefine mês para um e dia para um com o relógio em zero; month mantém ano e mês mas fixa o dia em um e o relógio em zero; day mantém a data de calendário e zera o relógio; hour zera minuto e segundo; minute zera só o segundo. Formate os campos civis truncados como string quatro-dois-dois T dois-dois-dois Z.
Onde calculadoras de truncar data-hora a unidade valem a pena
Pipelines de analytics materializam chaves de eventos diárias e horárias baixando carimbos de ingestão ao piso, para que cada idioma e região compartilhe o mesmo bucket UTC sem inventar uma biblioteca de calendário. Equipes de finanças e operações agrupam linhas de razão ou tickets de suporte em períodos de mês ou dia para resumos determinísticos que batem com auditorias offline.
Painéis de produto e crescimento traçam atividade por hora ou dia com um piso estável para que prévias do navegador e agregações do backend nunca discordem em uma hora nas transições de horário de verão.
Se depois precisar somar horas ou dias a um carimbo, contar dias entre duas datas, calcular início e fim de mês, ou converter unidades de tempo puras entre horas e minutos, trate isso como intenções de busca e landings separadas em vez de sobrecarregar esta página de truncar data-hora a unidade: resolvem consultas diferentes mesmo quando parte da aritmética se parece por baixo.
Casos de uso
Buckets de analytics diários e horários
Baixe carimbos ISO de eventos a dia ou hora em UTC para que cada linguagem do pipeline materialize a mesma chave de agregação em gráficos e rollups.
Períodos de relatório mensais e anuais
Trunque data-horas de razão ou tickets a mês ou ano para construir inícios de período determinísticos em exportações, auditorias e resumos financeiros.
Perguntas frequentes
Quais unidades são suportadas?
Exatamente cinco tokens sem distinção de maiúsculas: year, month, day, hour e minute.
O truncamento usa meu fuso horário local?
Não. O piso é sempre calculado em UTC a partir da string de entrada explícita. Deslocamentos na string são convertidos primeiro para UTC; o relógio do anfitrião nunca é lido.
O que acontece com um dia de calendário inválido?
A tarefa não avança para março nem inventa um dia bissexto.
O que recebo ao truncar no mês ou no ano?
Ao truncar no mês, você recebe o primeiro dia desse mês à meia-noite UTC. Ao truncar no ano, recebe 1º de janeiro desse ano à meia-noite UTC, com todas as partes menores zeradas.
O que acontece com um horário escrito com deslocamento de fuso?
Primeiro ele é convertido para UTC e só depois truncado. Por isso, um horário com deslocamento positivo pode cair em outra hora ou até em outro dia do que aparece no texto original.
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/truncate-to-unit \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"datetime":"2024-06-15T14:37:52Z","unit":"day"}'const res = await fetch("https://api.kit.forhosting.com/date/truncate-to-unit", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"datetime": "2024-06-15T14:37:52Z",
"unit": "day"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/truncate-to-unit",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"datetime": "2024-06-15T14:37:52Z",
"unit": "day"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/truncate-to-unit", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"datetime":"2024-06-15T14:37:52Z","unit":"day"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"datetime":"2024-06-15T14:37:52Z","unit":"day"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/truncate-to-unit", 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
{
"datetime": "2024-06-15T14:37:52Z",
"unit": "day"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.truncate_to_unit",
"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
Fusos do anfitrião e tabelas de horário de verão fazem um piso ingênuo divergir entre navegadores, servidores e Workers na borda.
O que você envia e o que recebe de volta
Verificações clássicas: baixar as quatorze trinta e sete ao dia à meia-noite UTC, baixar um carimbo matinal com deslocamento mais-dois à hora em Z puro, baixar ao mês no primeiro dia, baixar ao ano em primeiro de janeiro, e rejeitar uma base como 29 de fevereiro em ano comum. Envie dois campos obrigatórios: datetime como string ISO-8601, por exemplo dois mil e vinte e quatro hífen zero seis hífen quinze T quatorze dois-pontos trinta e sete dois-pontos cinquenta e dois Z, e unit como um de year, month, day, hour ou minute (sem distinção de maiúsculas). Alias date, dt, timestamp e ts são aceitos para a string base; alias to, truncate_to e granularity para a unidade. Campos ausentes, datetime que não seja string, strings que não batem com a forma ISO, dias de calendário impossíveis, componentes de hora inválidos e unidades fora dos cinco tokens permitidos falham com invalid_input e não são cobrados. Em sucesso a resposta ecoa o datetime base aparado, a unit em minúsculas normalizada, a string ISO UTC resultante após o truncamento, o ano, mês, dia, hora, minuto e segundo numéricos do instante de piso, o epoch_seconds do resultado e uma fórmula curta documentando a regra de piso UTC. O preço de chamadas API bem-sucedidas é a base publicada de US$ 0,002 por item; falhas de validação não consomem saldo pré-pago.
Onde calculadoras de truncar data-hora a unidade valem a pena
Como a capacidade é um motor parse puro, o preço da API é a base publicada de US$ 0,002 por item bem-sucedido e validação falha não consome saldo.
Casos de integração
Fixtures de QA em limites de bucket
Gere instantes de piso esperados em meia-noite, inícios de mês e conversão de deslocamento para UTC em testes de regressão sem relógio do anfitrião.
Perguntas técnicas
Como truncar uma data-hora ao dia em UTC?
Envie datetime como string ISO-8601 e unit como day. A API devolve a mesma data de calendário em 00:00:00Z após normalizar qualquer deslocamento numérico para UTC.
Quanto custa a ferramenta de truncar data-hora a unidade?
A ferramenta do navegador é gratuita. Pedidos API usam saldo pré-pago KIT a US$ 0,002 por chamada bem-sucedida; entrada inválida não é faturada.