El tipo date (fecha)
En JavaScript, las fechas se manejan utilizando el objeto Date. Este objeto permite crear, manipular, y formatear fechas y horas de una manera sencilla.
1. Crear un Objeto Date #
Para trabajar con fechas, primero debes crear una instancia del objeto Date. Hay varias maneras de hacerlo:
-
Fecha y hora actual:
- Si creas un
Datesin argumentos, obtendrás la fecha y hora actuales. - Ejemplo:
1let ahora = new Date(); 2console.log(ahora); // Muestra la fecha y hora actuales
- Si creas un
-
Fecha específica:
-
Puedes crear un
Datepasando una cadena de texto que describa una fecha, o especificando año, mes, día, etc. -
Ejemplo con cadena de texto:
1let navidad = new Date("2024-12-25T00:00:00.000Z"); 2console.log(navidad); // Muestra "2024-12-25T00:00:00.000Z"Salida de consola 2024-12-25T00:00:00.000Z
-
Ejemplo con argumentos separados:
1let fecha = new Date(2024, 11, 25); // Año, mes (0-11), día 2console.log(fecha); // Muestra "2024-12-25T00:00:00.000Z"Salida de consola 2024-12-25T00:00:00.000Z
-
Nota: Los meses en JavaScript van de 0 (enero) a 11 (diciembre), por lo que
11representa diciembre.
-
-
Fecha y hora específica:
- Puedes especificar también la hora, minutos, segundos y milisegundos.
- Ejemplo:
1let fechaYHora = new Date(2024, 11, 25, 10, 30, 0); // Año, mes, día, hora, minutos, segundos 2console.log(fechaYHora); // Muestra "2024-12-25T10:30:00.000Z"Salida de consola 2024-12-25T10:30:00.000Z
Métodos para Trabajar con Fechas #
El objeto Date incluye muchos métodos útiles para obtener y modificar partes de la fecha y hora:
-
Obtener partes de la fecha:
getFullYear(): Devuelve el año.1let año = ahora.getFullYear(); 2console.log(año); // Muestra el año actualgetMonth(): Devuelve el mes (0-11).1let mes = ahora.getMonth(); 2console.log(mes); // Muestra el mes actual (0-11)getDate(): Devuelve el día del mes (1-31).1let dia = ahora.getDate(); 2console.log(dia); // Muestra el día actualgetDay(): Devuelve el día de la semana (0-6, donde 0 es domingo).1let diaSemana = ahora.getDay(); 2console.log(diaSemana); // Muestra el día de la semana (0-6)getHours(),getMinutes(),getSeconds(): Devuelven la hora, minutos y segundos, respectivamente.1let horas = ahora.getHours(); 2let minutos = ahora.getMinutes(); 3console.log(horas + ":" + minutos); // Muestra la hora actual en formato "HH:MM"
-
Modificar partes de la fecha:
setFullYear(año): Cambia el año.1let ahora = new Date(); 2ahora.setFullYear(2025); // Cambia el año a 2025 3console.log(ahora.getFullYear());Salida de consola 2025
setMonth(mes),setDate(día),setHours(hora), etc.: Permiten cambiar el mes, día, hora, etc.1let ahora = new Date(); 2ahora.setMonth(0); // Cambia el mes a Enero (0) 3console.log(ahora.getMonth());Salida de consola 0
-
Obtener la fecha en formatos específicos:
toDateString(): Devuelve solo la parte de la fecha como una cadena legible.1console.log(ahora.toDateString()); // Ejemplo: "Thu Dec 25 2024"toTimeString(): Devuelve solo la parte de la hora.1console.log(ahora.toTimeString()); // Ejemplo: "10:30:00 GMT-0500 (hora estándar)"toISOString(): Devuelve la fecha en formato ISO 8601.1console.log(ahora.toISOString()); // Ejemplo: "2024-12-25T10:30:00.000Z"
Comparación de Fechas #
Puedes comparar fechas usando los operadores habituales (<, >, <=, >=, ==, ===).
Ejemplo de comparación:
1let fecha1 = new Date(2024, 11, 25); 2let fecha2 = new Date(2025, 11, 25); 3 4if (fecha1 < fecha2) { 5 console.log("fecha1 es anterior a fecha2"); 6}Salida de consola fecha1 es anterior a fecha2
Laboratorio: zonas horarias y cambios de hora #
Un instante no cambia al representarlo en otra zona, pero su fecha y hora local
sí pueden cambiar. Compara cuatro zonas y avanza una hora real alrededor del
cambio de horario: observa el salto de primavera y la hora repetida en otoño.
Los cálculos se ejecutan con Date e Intl en tu navegador.
Laboratorio interactivo
Date: un instante, varias zonas horarias
Representa el mismo timestamp en UTC, Madrid, Nueva York y Tokio. Intl calcula sus horas y offsets; avanzar 60 minutos reales puede saltar o repetir una hora local por el cambio de horario.
Pulsa Comparar zonas para representar este instante UTC.
const fecha = new Date("2026-03-29T00:30:00Z");
new Intl.DateTimeFormat('es-ES', {
timeZone: 'Europe/Madrid',
hour: '2-digit', minute: '2-digit',
timeZoneName: 'shortOffset'
}).format(fecha);La entrada se interpreta explícitamente como UTC aunque el control no muestre una zona. Date guarda milisegundos desde el epoch, no una zona horaria. La fecha local puede caer en otro día. Los offsets y cambios estacionales proceden de las reglas IANA incluidas en tu navegador.
Experimenta: Carga Inicio de horario de verano, compara y avanza +60 min: Madrid pasa de 01:30 a 03:30. Prueba Fin de horario de verano: 02:30 se repite con un offset distinto.
Resumen del tema
Conceptos clave #
- Objeto
Date: almacena fechas y horas como el número de milisegundos transcurridos desde la época Unix (1 de enero de 1970 UTC). - Indexación Base Cero para Meses: los meses se numeran del
0(enero) al11(diciembre). - Métodos Getters y Setters:
- Lectura:
getFullYear(),getMonth(),getDate()(día del mes),getDay()(día de semana 0-6),getHours(),getMinutes(),getTime(). - Escritura:
setFullYear(),setMonth(),setDate(), etc.
- Lectura:
- Formateo y Comparación:
.toISOString(),.toDateString(),.toTimeString()y comparación matemática directa de timestamps con<,>,<=,>=.
Qué debes recordar #
Ten siempre presente que en el objeto Date de JavaScript los meses comienzan en índice 0 (0 = Enero, 11 = Diciembre).