date -d @1787043600 imprime a data de um timestamp, e date -u -d '2026-08-18 09:00:00' +%s faz o caminho de volta. Dois detalhes decidem se isso vai funcionar para você: o macOS usa -r no lugar de -d @, e um timestamp em milissegundos precisa ser dividido por 1000 ou o date recusa de cara.
1. Timestamp para data
$ clai converta 1787043600 em data→ date -d @1787043600Tue Aug 18 09:00:00 UTC 2026
O @ na frente do número é obrigatório — ele avisa o date que são segundos desde 1970, não uma string de data. O resultado sai no fuso da máquina.
2. Explicitamente em UTC
$ clai mostre 1787043600 em UTC→ date -u -d @1787043600Tue Aug 18 09:00:00 UTC 2026
O -u prende a saída em UTC, não importa como a máquina esteja configurada. Numa thread de incidente, é o único jeito de parar a discussão sobre de quem era aquela hora.
3. Num fuso específico
$ clai mostre esse horário em Berlim→ TZ=Europe/Berlin date -d @1787043600Tue Aug 18 11:00:00 CEST 2026
Um TZ antes do comando vale só para aquele comando. Use nomes IANA (Europe/Berlin, America/New_York) em vez de siglas como CEST, que são ambíguas.
4. De volta: data para timestamp
$ clai converta 18 de agosto de 2026 09:00 UTC para tempo unix→ date -u -d '2026-08-18 09:00:00' +%s1787043600
+%s é o formato de saída "segundos desde a época". Sem -u, a string é lida no fuso da máquina e o número sai diferente.
5. Em ISO 8601
$ clai imprima o timestamp em formato ISO→ date -u -Is -d @17870436002026-08-18T09:00:00+00:00
-Is é a forma curta de --iso-8601=seconds. Quase toda linguagem de programação lê esse formato sem esforço extra.
6. Um timestamp em milissegundos
$ clai converta o timestamp em milissegundos 1787043600123→ ms=1787043600123; date -u -d @$((ms/1000)) +"%F %T.$((ms%1000))"2026-08-18 09:00:00.123
JavaScript, Java e a maioria das APIs entregam milissegundos. A divisão inteira dá os segundos, e o resto fornece a parte fracionária que o date não produz sozinho.
Gotchas
- O date não entende milissegundos. Verificado:
date -u -d @1787043600123respondedate: invalid date '@1787043600123'. O número não vem de um futuro distante, é 2026 multiplicado por mil. - No macOS a flag é outra. GNU:
date -d @1787043600. BSD e macOS:date -r 1787043600. Um script escrito no Linux imprime a data de hoje ou quebra num Mac — instalecoreutilsdo Homebrew e chamegdatese quiser uma sintaxe só. - Sem
-uvocê converte para o fuso de outra pessoa. O mesmo timestamp num servidor em UTC e num notebook em Berlim fica duas horas distante, como acima. Em relatórios de incidente, fixe sempre o fuso.
Related questions
Como pego o timestamp atual? date +%s. Para milissegundos, o GNU tem date +%s%3N; o BSD não tem esse formato.
Como calculo a diferença entre duas datas? Converta as duas para segundos e subtraia: entre 11 e 18 de agosto de 2026 dá 604800 segundos, exatamente uma semana.
O que é o problema do ano 2038? Um campo de segundos de 32 bits com sinal estoura em 19 de janeiro de 2038. Em sistemas de 64 bits e linguagens modernas o assunto está resolvido, mas ainda aparece em formatos binários antigos.
See also
- sed -i não funciona no macOS
- journalctl: logs de um serviço
- Contar ocorrências num log: grep -c não é a resposta
O CliAI transforma "que horas eram 1787043600" na flag certa para a sua máquina, e mostra antes de rodar. Instale em uma linha.