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_PauloEurope/LondonAsia/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
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 dadosTemporal.PlainDate→ datas sem horaTemporal.ZonedDateTime→ eventos com fuso
Integração com Intl (exibição)
Depois de resolver a lógica com Temporal:
- use
Intlpara formatar - respeite idioma e cultura do usuário
Resumo da aula para nunca mais esquecer
- Fuso horário muda a interpretação da data
Temporal.Instanté absolutoZonedDateTimerepresenta 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.
Você Sabia?
Mega Man
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.
Nintendo Entertainment System
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.
Senhas
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.
PDP-1
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.
ENIAC
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.










