DEV Community

Cover image for Conheça a API Temporal. Datas em JavaScript sem dor de cabeça!
Pablo Henrique
Pablo Henrique

Posted on

Conheça a API Temporal. Datas em JavaScript sem dor de cabeça!

O jeito que a gente lida com datas: antes e depois do Temporal

Sabe como é mexer com datas em JavaScript hoje, né? É quase um ritual: a gente primeiro lamenta ter que usar o objeto Date e depois corre pra instalar uma biblioteca como moment.js ou date-fns pra não passar raiva.

Como a gente faz hoje (com bibliotecas)

O problema do Date nativo é que ele é mutável (você altera o objeto original sem querer e cria bugs) e lidar com fusos horários é um pesadelo. Então, o que a gente faz?

// Exemplo com date-fns
import { addDays, format } from 'date-fns';

const hoje = new Date();
const daquiUmaSemana = addDays(hoje, 7); // A biblioteca cria um novo objeto pra gente

console.log(format(daquiUmaSemana, 'dd/MM/yyyy'));
Enter fullscreen mode Exit fullscreen mode

Funciona, claro. Bibliotecas como moment.js e date-fns são ótimas e resolvem o problema. Mas no fundo, a gente está adicionando uma dependência externa, aumentando o tamanho do nosso projeto, só pra fazer uma coisa que deveria ser básica e nativa da linguagem.

A promessa da API Temporal

A API Temporal vem sendo discutida e desenvolvida desde 2017 dentro do comitê TC39, o grupo responsável pela evolução do JavaScript. Ela surgiu justamente para resolver as limitações e armadilhas da API Date, que existe desde os primórdios da linguagem.

Agora, em 2025, a Temporal finalmente está começando a aparecer nos navegadores para testes. Navegadores como Firefox e versões experimentais do Chrome já oferecem suporte parcial.

Como testar a API Temporal hoje

Em navegadores:

Firefox (a partir da versão 115+):

  1. Acesse about:config na barra de endereços.
  2. Procure por javascript.options.temporal.
  3. Altere o valor para true.
  4. Recarregue o navegador e abra o console para testar.

Chrome (Canary ou dev builds):

  1. Execute com a flag: --enable-features=Temporal
  2. Ou ative via chrome://flags procurando por "Temporal".

Em Node.js:

A API Temporal já está disponível experimentalmente a partir do Node.js v20.0.0, mas você precisa ativar manualmente.

Como testar no Node:

Instale a versão 20+:

   nvm install 20
   nvm use 20
Enter fullscreen mode Exit fullscreen mode

Execute seu script com a flag:

   node --experimental-temporal seu-script.js
Enter fullscreen mode Exit fullscreen mode

Exemplo simples:

   const { Temporal } = require('node:temporal');

   const hoje = Temporal.Now.plainDateISO();
   const daquiUmaSemana = hoje.add({ days: 7 });

   console.log(daquiUmaSemana.toString());
Enter fullscreen mode Exit fullscreen mode

Como vai ser com a API Temporal (o futuro nativo)

A grande sacada é que ela foi pensada do zero pra resolver todas as nossas dores de cabeça. Com o Temporal, o código vai ficar assim:

// Exemplo com a futura API Temporal
const hoje = Temporal.Now.plainDateISO(); // Pega a data de hoje, sem hora, sem fuso. Simples.
const daquiUmaSemana = hoje.add({ days: 7 }); // O método .add() retorna um NOVO objeto.

console.log(daquiUmaSemana.toString()); // O formato já é inteligente por padrão.
Enter fullscreen mode Exit fullscreen mode

Percebe a diferença? A lógica é muito mais clara e direta.

Os benefícios que o Temporal vai trazer pra gente

Resumindo, as vantagens são enormes:

Imutabilidade por padrão:

Chega de bugs por alterar uma data sem querer. Toda operação (.add(), .subtract()) cria um novo objeto Temporal, mantendo o original intacto. Isso deixa o código muito mais seguro e previsível.

API clara e específica:

Chega de confusão. Teremos objetos separados para cada necessidade:

  • Temporal.PlainDate (só data)
  • Temporal.PlainTime (só hora)
  • Temporal.ZonedDateTime (data, hora e fuso horário) Você usa exatamente o que precisa.

Fim do pânico com fuso horário:

Lidar com timezones finalmente vai ser algo simples e explícito, diretamente na API, sem gambiarras.

Menos dependências:

Não vamos mais precisar instalar uma biblioteca pesada só para manipular datas. Isso significa projetos mais leves e menos uma coisa pra se preocupar em atualizar.

É basicamente a solução que a gente sempre quis, e o melhor: nativa no próprio JavaScript e já disponível para quem quiser testar.

Top comments (0)