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'));
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+):
- Acesse
about:config
na barra de endereços. - Procure por
javascript.options.temporal
. - Altere o valor para
true
. - Recarregue o navegador e abra o console para testar.
Chrome (Canary ou dev builds):
- Execute com a flag:
--enable-features=Temporal
- 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
Execute seu script com a flag:
node --experimental-temporal seu-script.js
Exemplo simples:
const { Temporal } = require('node:temporal');
const hoje = Temporal.Now.plainDateISO();
const daquiUmaSemana = hoje.add({ days: 7 });
console.log(daquiUmaSemana.toString());
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.
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)