O objeto Date existe desde os primórdios do JavaScript.

Ele parece simples, mas é responsável por uma quantidade enorme de bugs em aplicações reais.

Antes de aprender alternativas modernas, precisamos entender:

por que o Date é problemático.

🎯 Objetivo da aula

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

  • Entender as limitações do objeto Date
  • Reconhecer bugs comuns envolvendo datas
  • Identificar armadilhas com fusos horários
  • Separar formatação de lógica de datas
  • Compreender por que novas APIs surgiram

O objeto Date parece simples…

À primeira vista, tudo parece tranquilo:

 
  const agora = new Date();
  console.log(agora);
  // Saída será algo como: Wed Jan 21 2026 14:00:00 GMT-0300

Mas essa simplicidade é enganosa.

Problema 1 — Meses começam em zero 🤯

 
  const data = new Date(2026, 0, 21);
  console.log(data);
  // Saída será: 21 de janeiro de 2026

Aqui:

  • Janeiro = 0
  • Fevereiro = 1
  • Dezembro = 11
Isso é fonte constante de erros off-by-one.

Problema 2 — Mutabilidade silenciosa

O objeto Date é mutável.

 
  const data = new Date();
  data.setDate(data.getDate() + 1);
  console.log(data);
  // Saída será: data alterada

Se você passar esse objeto para outra função:

  • ele pode ser alterado sem aviso
  • bugs aparecem longe da origem
Mutabilidade + datas = bugs difíceis de rastrear.

Problema 3 — Fuso horário implícito

Veja este código:

 
  const data = new Date("2026-01-21");
  console.log(data);
  // Saída depende do fuso horário

Dependendo do fuso:

  • a data pode virar dia 20
  • ou dia 21
A mesma string pode gerar datas diferentes em máquinas diferentes.

Problema 4 — Strings ambíguas

O Date aceita vários formatos de string:

 new Date("01/02/2026"); // ❓ 

Isso é:

  • 1 de fevereiro?
  • 2 de janeiro?
O resultado varia por ambiente e navegador.

Problema 5 — API confusa e extensa

O objeto Date tem:

  • getDate
  • getDay
  • getMonth
  • getFullYear

E todos retornam números diferentes com significados diferentes.

É fácil confundir dia do mês com dia da semana.

Problema 6 — Cálculos são perigosos

 
  const inicio = new Date("2026-01-01"); 
  const fim = new Date("2026-02-01");
  const diferenca = fim - inicio;
  console.log(diferenca);
  // Saída será: milissegundos

Você recebe:

  • milissegundos
  • sem contexto
  • sem semântica
Tudo vira matemática de baixo nível.

Problema 7 — Mistura de responsabilidades

O Date tenta ser tudo ao mesmo tempo:

  • data
  • hora
  • fuso
  • formatação

Isso gera:

  • API inchada
  • pouca clareza

Tentativas de solução (parciais)

Ao longo dos anos, surgiram alternativas:

  • moment.js (hoje descontinuado)
  • date-fns
  • luxon

Mas o JavaScript precisava de algo:

nativo, moderno e correto.

Resumo do problema

  • API antiga
  • mutável
  • confusa
  • dependente de fuso
  • propensa a erros
O problema não é você — é o Date.

Resumo da aula para nunca mais esquecer

  • O objeto Date é antigo e problemático
  • Meses começam em zero
  • Datas são mutáveis
  • Fusos causam bugs silenciosos
  • Precisamos de uma alternativa moderna

Na próxima aula, vamos conhecer essa alternativa:

Introdução à Temporal API.


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?

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.


A partida mais longa do clássico Space Invaders durou incríveis 38 horas e 32 minutos e esta façanha foi conseguida por um jogador de apenas 12 anos! O jogo, claro, podia ser pausado para alimentação e descanso, mas ainda assim o recorde, estabelecido no dia 02/09/1980, ainda não foi quebrado. Saiba mais.


Ao completar o nível 99 do jogo Duck Hunt, para Nintendo, o jogo retorna ao primeiro nível, mas um bug impede que se acerte os patos neste recomeço. Este é um exemplo do que é chamado no mundo dos games de "Kill Screen".


A IBM detém o recorde de patentes em um único ano, atingindo a marca de 4186 registros no ano de 2008. Clique aqui e saiba mais sobre esta gigante do mundo da tecnologia.


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.