Argonalyst

Melhorias da API Temporal para manipulação de datas em JavaScript

Argonalyst
30 January 2025

A nova API Temporal trouxe uma série de melhorias significativas para o manuseio de datas e horários em JavaScript, facilitando tarefas comuns e complexas. Uma das funcionalidades mais básicas é a obtenção da data e hora atuais como uma string ISO. Além disso, agora é possível especificar fusos horários em diversas funções, o que elimina a necessidade de cálculos manuais complicados. Por exemplo, o código abaixo demonstra a obtenção da data atual no fuso horário de Nova York:

```js
// A data atual no fuso horário "America/New_York"
const dateTimeInNewYork = Temporal.Now.plainDateTimeISO("America/New_York");
console.log(dateTimeInNewYork);
// e.g.: 2025-01-22T05:47:02.555
```

Outra inovação importante é a possibilidade de trabalhar com diferentes calendários. Com isso, é possível criar datas em sistemas que não são apenas o gregoriano, como os calendários hebraico, chinês e islâmico. O exemplo abaixo ilustra como determinar a próxima celebração do Ano Novo Chinês:

```js
// Os Anos Novos Chineses ocorrem em 1/1 no calendário chinês
const chineseNewYear = Temporal.PlainMonthDay.from({ monthCode: "M01", day: 1, calendar: "chinese", });
const currentYear = Temporal.Now.plainDateISO().withCalendar("chinese").year;
let nextCNY = chineseNewYear.toPlainDate({ year: currentYear });
// Se nextCNY ocorrer antes da data atual, avançar um ano
if (Temporal.PlainDate.compare(nextCNY, Temporal.Now.plainDateISO()) <= 0) {
nextCNY = nextCNY.add({ years: 1 });
}
console.log(`O próximo Ano Novo Chinês será em ${nextCNY.withCalendar("iso8601").toLocaleString()}`);
// O próximo Ano Novo Chinês é em 1/29/2025 (no momento da escrita)
```

Outro uso comum da API é o trabalho com timestamps Unix, que são amplamente utilizados em várias plataformas. O exemplo a seguir mostra como converter um timestamp em milissegundos em um instante e calcular a diferença até o momento atual:

```js
// 1851222399924 é nosso timestamp
const launch = Temporal.Instant.fromEpochMilliseconds(1851222399924);
const now = Temporal.Now.instant();
const duration = now.until(launch, { smallestUnit: "hour" });
console.log(`Faltam ${duration.toLocaleString("en-US")} até o lançamento`);
// "Faltam 31,600 hr até o lançamento"
```

É importante ressaltar que, atualmente, o método toLocaleString não gera uma string sensível ao local na implementação do Firefox, o que resulta em formatos de duração não sensíveis ao local. Isso pode mudar no futuro, já que a formatação de duração é tecnicamente viável, e as implementações podem convergir.

Um aspecto interessante da API é o método compare(), que permite ordenar durações de forma elegante e eficiente. Com tantas melhorias, a API Temporal promete facilitar a vida dos desenvolvedores na manipulação de datas e horários.

Últimos vídeos

Confira os últimos vídeos publicados no canal

Argonalyst

O plano SECRETO das Big Techs para cobrar MUITO mais pela IA

Argonalyst

BOLHA da IA ou NOVA era de crescimento EXPONENCIAL? O mercado está dividido

Argonalyst

Nova IA da OpenAI traduz em TEMPO REAL e pode mudar o mundo dos negócios

Argonalyst

Spec Driven Development (SDD): a habilidade que vai separar quem SOBREVIVE à IA

Argonalyst

DeepSeek V4: o Open Source que está AMEAÇANDO GPT 5.5 e Opus 4.7

Argonalyst

Prometeram Renda Universal… mas só veio desemprego?

Argonalyst

Mythos Preview: o começo da AGI ou só mais hype?

Argonalyst

Ele automatizou TUDO com IA… e pode virar bilionário sozinho

Argonalyst

Programadores foram só o começo… agora a IA quer o topo

Argonalyst

Multi-agentes, memória e IA eterna: o vazamento que mudou tudo

Argonalyst

VIBE CODING vai acabar… e o que vem agora é muito mais SINISTRO

Argonalyst

IA na Guerra: estamos criando algo mais PERIGOSO que a Bomba Atômica?

Argonalyst

O dinheiro vai desaparecer? A era da IA pode mudar tudo

Argonalyst

O Apocalipse do SaaS: Como a IA pode DESTRUIR o modelo bilionário do software

Argonalyst

Bitcoin é software… e o software está morrendo (isso explica a queda?)