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