Playground de Date de JavaScript
Escribe una expresión Date de JavaScript y explora cada formato de salida y propiedad en tiempo real — toISOString, toString, getTime, getFullYear y más.
JavaScript Expression
Type any expression that returns a Date or number.
El objeto Date de JavaScript
El objeto Date integrado en JavaScript almacena el tiempo internamente como el número de milisegundos desde la época Unix (1 de enero de 1970 00:00:00 UTC). Cada instancia de Date es en el fondo solo este único entero. Los distintos métodos —toISOString(), toString(), toLocaleString()— son formas diferentes de mostrar ese mismo valor subyacente.
Errores comunes al trabajar con fechas en JavaScript
Varios comportamientos de Date en JavaScript hacen tropezar a desarrolladores con experiencia:
- Los meses empiezan en cero: enero es 0, diciembre es 11 — suma siempre 1 al mostrarlos
- new Date('2024-01-01') se interpreta como medianoche UTC; new Date('2024/01/01') como medianoche local
- new Date(2024, 0, 1) construye el 1 de enero de 2024 en hora local (el mes empieza en cero)
- Date.now() devuelve milisegundos; Math.floor(Date.now() / 1000) da segundos Unix
- Evita sumar días añadiendo 86400000ms — el DST puede hacer que caiga a la hora equivocada
Trabajar con zonas horarias en JavaScript
El objeto Date de JavaScript no tiene propiedad de zona horaria: siempre se almacena en UTC. Las conversiones de zona horaria se realizan al mostrar, con la 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) — devuelve partes individuales para formato personalizado
Cómo leer la salida del playground
El playground muestra varias vistas del mismo valor Date para que detectes rápido errores de unidad y de zona horaria. Compara primero getTime con los segundos Unix, luego revisa las cadenas ISO y local. Si la fecha ISO es correcta pero la cadena local se ve distinta, la marca de tiempo está bien y solo cambió la zona horaria de visualización.
- getTime siempre son milisegundos desde la época Unix
- Los segundos Unix son getTime dividido entre 1000 y redondeado hacia abajo
- toISOString siempre muestra UTC con una Z final
- toString y toLocaleString muestran la zona horaria local del navegador salvo que las opciones lo anulen