JavaScript de Cero a Experto / Strings, números y fechas
Fechas con Date: domar al objeto más tramposo
¿Hace cuántos días fue ese gasto? ¿Qué día de la semana cae el pago? Toda
app maneja fechas, y en JavaScript viven en el objeto Date — poderoso,
omnipresente... y con fama bien ganada de tramposo (spoiler: los meses
empiezan en 0). Hoy lo domas, y con Intl.DateTimeFormat cierras el
círculo de la lección pasada mostrándolas en perfecto español.
El contador gigante
Crear y leer fechas
La trampa histórica: los meses van de 0 a 11 (como índices de array — de
hecho por eso encajan directo con un array de nombres), pero los días del
mes van de 1 a 31. Esa inconsistencia ha producido millones de bugs; ahora
estás vacunado. Y no confundas getDate() (día del MES: 15) con getDay()
(día de la SEMANA: 3 = miércoles, contando domingo como 0).
Restar fechas: el cronómetro al rescate
Mostrarlas en español: el círculo se cierra
Nada de armar strings de fecha a mano — el Intl de la lección pasada
también viste fechas:
Nota honesta: Date tiene defectos de diseño reconocidos (los meses desde
0, que sea mutable, el manejo enredado de zonas horarias). Su reemplazo
oficial ya existe — se llama Temporal y está aterrizando en los
navegadores — pero durante años TODO el código que encuentres usará Date,
así que dominarlo no es opcional. Cuando Temporal sea estándar de facto,
tus conceptos (timestamps, partes, formateo con Intl) se trasladan tal
cual.
Quieres crear el 15 de julio de 2026 y escribes new Date(2026, 7, 15). Al mostrarla con Intl aparece '15 de agosto de 2026'. ¿Qué pasó?
Mini-reto
En "Mi Bolsillo": crea la fecha de un gasto (new Date(2026, 6, 3)) y la de
hoy con new Date(). Calcula cuántos días han pasado entre ambas
(redondea con Math.floor), muestra la fecha del gasto con
dateStyle: "full" en es-CO, y de bonus pásale los días transcurridos
(en negativo) al Intl.RelativeTimeFormat de la lección pasada para
obtener el "hace X días" de las apps modernas.
Qué sigue
Strings, números y fechas: dominados. Queda la herramienta legendaria del módulo: las expresiones regulares — patrones para buscar y validar texto ("¿esto es un celular colombiano válido?", "sácame todos los montos de este párrafo"). Intimidan de lejos, pero desde cero y por piezas, son un superpoder. Próxima lección.