Miniatura del tutorial de Fechas en JavaScript

Fechas en JavaScript: Date e Intl.DateTimeFormat en español

Para trabajar con fechas en JavaScript puedes utilizar Date para representar un instante e Intl.DateTimeFormat para mostrarlo con el idioma y la zona horaria apropiados. Separar el valor almacenado de su presentación evita muchos errores.

Una fecha de cumpleaños, una hora de una cita y un instante de publicación no son exactamente el mismo tipo de dato. Antes de elegir formato, decide qué necesitas conservar.

Cómo obtener la fecha actual

const ahora = new Date();
console.log(ahora.getFullYear());
console.log(ahora.getMonth() + 1);
console.log(ahora.getDate());

GetMonth devuelve un índice de 0 a 11; por eso se suma uno al mostrar el número de mes. GetDate devuelve el día del mes, mientras que getDay devuelve el día de la semana.

Cómo crear una fecha sin confundir los meses

const fechaLocal = new Date(2026, 10, 3, 15, 30);
console.log(fechaLocal.getMonth()); // 10: noviembre

const instante = new Date("2026-11-03T15:30:00Z");
console.log(instante.toISOString()); // 2026-11-03T15:30:00.000Z

El constructor numérico del primer ejemplo utiliza la zona local del entorno. La Z del segundo indica UTC. No son necesariamente el mismo instante.

Mostrar una fecha en español y en una zona concreta

const instante = new Date("2026-11-03T15:30:00Z");
const formato = new Intl.DateTimeFormat("es-ES", {
  dateStyle: "long",
  timeStyle: "short",
  timeZone: "Europe/Madrid"
});
console.log(formato.format(instante));

La opción timeZone evita depender de la zona del dispositivo para esta presentación. La puntuación y ciertos detalles pueden variar según los datos lingüísticos del entorno: no compares el texto formateado como si fuera un identificador estable.

Evita cadenas de fecha ambiguas

No dependas de interpretar textos como 03/11/2026: el formato puede ser ambiguo o no admitirse de la misma manera. Prefiere un formato definido y conserva explícitamente los datos necesarios.

Una cadena de fecha sin hora, como 2026-11-03, tiene reglas de interpretación que pueden producir cambios de día al mostrarla en otra zona. Si estás gestionando una fecha de calendario sin hora, evita tratarla despreocupadamente como un instante UTC.

Cómo comprobar si una fecha es válida

const fecha = new Date("texto incorrecto");
console.log(Number.isNaN(fecha.getTime())); // true

Esto detecta una representación inválida, pero no valida por sí solo todos los datos de negocio. El constructor puede normalizar componentes fuera de rango; si el usuario introduce un día imposible, verifica también los componentes originales y las reglas de tu formulario.

Comparar instantes y calcular una duración

const inicio = new Date("2026-11-03T10:00:00Z");
const fin = new Date("2026-11-03T11:30:00Z");
const minutos = (fin.getTime() - inicio.getTime()) / 60000;
console.log(minutos); // 90

La resta calcula tiempo transcurrido. Sumar 24 horas en milisegundos no equivale siempre a avanzar un día de calendario en una zona con cambios de horario. Para agendas y reglas complejas de calendario necesitas una estrategia que contemple esa diferencia.

Preguntas frecuentes

¿Date almacena Europe/Madrid dentro del objeto?

No. El objeto representa un valor temporal; la zona interviene al interpretar componentes locales o al formatear.

¿Cómo guardo una publicación con hora?

Un instante en un formato acordado, como ISO con zona explícita, puede ser adecuado. Confirma el contrato con el servidor.

Si las fechas proceden de campos, consulta cómo validar formularios antes de utilizarlas.

Referencia técnica: documentación de MDN.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

logo mastercode pro
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.

Puedes ver mas detalle en nuestra pagina de privcidad