Playground

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.

JavaScript Expression

Type any expression that returns a Date or number.

O objeto Date do JavaScript

O objeto Date integrado do JavaScript armazena o tempo internamente como o número de milissegundos desde a época Unix (1º de janeiro de 1970 00:00:00 UTC). Cada instância de Date é, no fim das contas, apenas esse único 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 em JavaScript confundem até desenvolvedores experientes:

  • Os meses começam em zero: janeiro é 0, 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) constrói 1º de janeiro de 2024 em horário local (o mês começa em zero)
  • Date.now() retorna milissegundos; Math.floor(Date.now() / 1000) dá segundos Unix
  • Evite somar dias adicionando 86400000ms — o DST pode fazer isso cair no horário errado

Trabalhando com fusos horários em JavaScript

O objeto Date do JavaScript não tem propriedade de fuso horário — é sempre armazenado em UTC. As conversões de fuso são feitas na hora de exibir, usando 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 horário. Compare primeiro getTime com os segundos Unix, depois verifique as strings ISO e local. Se a data ISO está correta mas a string local parece diferente, a marca de tempo está certa e só o fuso de exibição mudou.

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