Playground de Date do JavaScript

Digite uma expressão Date do JavaScript e explore cada formato de saída e propriedade em tempo real — toISOString, toString, getTime, getFullYear e mais.

O objeto Date do JavaScript

O objeto Date integrado do JavaScript armazena o tempo internamente como o número de milissegundos desde o epoch Unix (1 de janeiro de 1970 00:00:00 UTC). Cada instância de Date é, no fim, apenas esse inteiro. Os vários métodos — toISOString(), toString(), toLocaleString() — são formas diferentes de exibir esse mesmo valor subjacente.

Armadilhas comuns ao trabalhar com datas em JavaScript

Vários comportamentos do Date pegam de surpresa até desenvolvedores experientes:

  • Os meses começam em zero: janeiro é 0 e dezembro é 11; sempre some 1 ao exibir
  • new Date('2024-01-01') é interpretado como meia-noite UTC; new Date('2024/01/01') como meia-noite local
  • new Date(2024, 0, 1) cria 1 de janeiro de 2024 em hora local (o mês começa em 0)
  • Date.now() retorna milissegundos; Math.floor(Date.now() / 1000) dá segundos Unix
  • Evite somar dias adicionando 86400000 ms — o horário de verão pode deixar no horário errado

Trabalhando com fusos horários em JavaScript

O objeto Date do JavaScript não tem propriedade de fuso — é sempre armazenado em UTC. As conversões de fuso são feitas na exibição, com a API Intl.DateTimeFormat.

  • new Intl.DateTimeFormat('en-US', { timeZone: 'Asia/Tokyo', dateStyle: 'full', timeStyle: 'long' }).format(date)
  • date.toLocaleString('zh-CN', { timeZone: 'Asia/Shanghai' })
  • new Intl.DateTimeFormat('en-CA', { timeZone: tz }).formatToParts(date) — retorna partes individuais para formatação personalizada

Como ler a saída do playground

O playground mostra várias visões do mesmo valor Date para você detectar rápido erros de unidade e de fuso. Compare primeiro getTime com os segundos Unix e depois confira as strings ISO e local. Se a data ISO está correta mas a string local parece diferente, o timestamp está certo e apenas o fuso de exibição mudou.

  • getTime é sempre milissegundos desde o epoch Unix
  • Os segundos Unix são getTime dividido por 1000 e arredondado para baixo
  • toISOString sempre exibe UTC com um Z no final
  • toString e toLocaleString exibem o fuso local do navegador, a menos que as opções o substituam