Até aqui, aprendemos por que o Date é problemático e conhecemos a Temporal API.

Agora vamos aplicar esse conhecimento ao cenário mais delicado de todos:

datas que dependem de fuso horário.

🎯 Objetivo da aula

Ao final desta aula, você será capaz de:

  • Entender o que é um fuso horário
  • Trabalhar com datas absolutas e locais
  • Converter datas entre fusos corretamente
  • Evitar erros comuns em aplicações globais

O que é um fuso horário?

Um fuso horário define:

  • a diferença em relação ao UTC
  • como a hora local deve ser interpretada

Exemplos:

  • America/Sao_Paulo
  • Europe/London
  • Asia/Tokyo

Esses nomes vêm do banco de dados IANA Time Zone.

Data absoluta vs data local

Antes de escrever código, precisamos separar dois conceitos:

  • Data absoluta → um instante no tempo (UTC)
  • Data local → como esse instante aparece em um fuso

Misturar esses conceitos é a raiz da maioria dos bugs.

Temporal.Instant — o tempo absoluto

Temporal.Instant representa um momento exato no tempo:

 
  const agora = Temporal.Now.instant();
  console.log(agora.toString());
  // Saída será algo como: 2026-01-21T17:00:00Z

Aqui:

  • não existe fuso
  • não existe localidade
  • é ideal para banco de dados

Convertendo um instante para um fuso

Para exibir esse instante para um usuário:


   const agora = Temporal.Now.instant();
   const agoraSP = agora.toZonedDateTimeISO("America/Sao_Paulo");
   const agoraTokyo = agora.toZonedDateTimeISO("Asia/Tokyo");
   console.log(agoraSP.toString());
   // Saída será algo como: 2026-01-21T14:00:00-03:00[America/Sao_Paulo]
   console.log(agoraTokyo.toString());
   // Saída será algo como: 2026-01-22T02:00:00+09:00[Asia/Tokyo]

O instante é o mesmo — o que muda é a interpretação local.

Criando eventos locais corretamente

Imagine um evento marcado para:

21 de janeiro de 2026 às 14h em São Paulo

 
  const eventoSP = Temporal.ZonedDateTime.from( "2026-01-21T14:00[America/Sao_Paulo]" );
  console.log(eventoSP.toString());
  // Saída será: 2026-01-21T14:00:00-03:00[America/Sao_Paulo]

Aqui:

  • a data é local
  • o fuso é explícito
  • não há ambiguidade

Convertendo o evento para outro fuso

 
  const eventoTokyo = eventoSP.withTimeZone("Asia/Tokyo");
  console.log(eventoTokyo.toString());
  // Saída será algo como: 2026-01-22T02:00:00+09:00[Asia/Tokyo]

O horário muda, mas o evento continua sendo o mesmo.

Erro clássico com Date (comparação)

Com Date, esse cenário costuma gerar bugs:

  • strings interpretadas em fusos diferentes
  • horários deslocados sem aviso
  • datas “pulando” de dia
A Temporal API elimina essas ambiguidades.

Calculando diferenças entre datas

Com Temporal, cálculos são semânticos:

 
  const inicio = Temporal.ZonedDateTime.from( "2026-01-01T00:00[America/Sao_Paulo]" );
  const fim = Temporal.ZonedDateTime.from("2026-01-21T00:00[America/Sao_Paulo]");
  const diferenca = fim.since(inicio);
  console.log(diferenca.days);
  // Saída será: 20

Nada de milissegundos sem significado.

Quando usar cada tipo?

  • Temporal.Instant → registros, logs, banco de dados
  • Temporal.PlainDate → datas sem hora
  • Temporal.ZonedDateTime → eventos com fuso

Integração com Intl (exibição)

Depois de resolver a lógica com Temporal:

  • use Intl para formatar
  • respeite idioma e cultura do usuário
Temporal resolve o “quando”, Intl resolve o “como mostrar”.

Resumo da aula para nunca mais esquecer

  • Fuso horário muda a interpretação da data
  • Temporal.Instant é absoluto
  • ZonedDateTime representa datas locais reais
  • Conversões entre fusos são seguras
  • Temporal elimina ambiguidades do Date

Na próxima aula, vamos fechar esse bloco com:

Boas práticas modernas com datas.


HARDWARE

Entendendo o seu computador

O que há dentro do meu computador?

Existem alguns componentes fundamentais presentes dentro do seu computador e é muito importante que você conheça um pouco sobre eles, seja para argumentar com algum vendedor durante a compra de um novo PC ou para identificar alguma atitude desleal de algum técnico que esteja te passando um orçamento para reparo. Na seção Raio-X aqui do Contém Bits você pode conhecer e entender mais detalhadamente sobre cada componente, ou também pode clicar abaixo no componente que deseja, para conhecê-lo melhor.

  • Gabinetes

  • Placas-Mãe

  • Processadores

  • Memória

  • Fontes

  • Drives Ópticos

  • Discos Rígidos

  • SSD

  • Placas de Som

  • Placas de Vídeo

Você Sabia?

A primeira versão do clássico Mega Man, para Nintendo 8 bits, tem seu recorde de pontos estabelecido em 03/11/2006, por David Archey, que cravou 2.396.700 pontos, terminando o jogo.


O console Nintendo Entertainment System (NES), da Nintendo, detém o recorde de videogame mais clonado em todo o mundo. Já foram catalogados mais de 300 aparelhos diferentes capazes de reproduzir seus jogos! Saiba mais sobre ele aqui.


Digitar senhas em computadores de uso coletivo é extremamente perigoso, pois além de softwares de monitoramento, existem dispositivos de hardware que podem capturar suas senhas. Evite ao máximo acessar sites de bancos a partir destes computadores. Veja mais aqui.


O primeiro computador a conseguir rodar o jogo Spacewar era o PDP-1, que custava 120 mil dólares e pertencia ao Massachusetts Institute of Technology. O jogo demorou 200 horas para ser desenvolvido, em 1962, e seu criador foi um cientista da computação chamado Steve Russel.


O ENIAC, primeiro computador valvulado do mundo, possuía 17.000 válvulas, 500.000 pontos de solda, 30 toneladas de peso e ocupava uma área de 180 metros quadrados. Clique aqui e conheça mais sobre a história dos computadores.