En JavaScript el tipo Date es un tipo básico que nos permite manejar fechas y horas y realizar operaciones con ellas.
Este objeto representa un instante en el tiempo, expresado como la cantidad de milisegundos transcurridos desde el 1 de enero de 1970 a las 00:00:00 UTC (también conocido como la “época Unix”)
El tipo Date
en JavaScript no es un tipo primitivo, como string
o number
, sino un objeto.
Creación de un objeto Date
Para crear un objeto Date, se puede utilizar el constructor Date()
, que acepta diferentes tipos de parámetros:
Si usamos new Date()
sin parámetros, se crea un objeto con la fecha y hora actuales.
const fechaActual = new Date();
console.log(fechaActual); // Muestra la fecha y hora actuales
También podemos especificar una fecha en el formato YYYY, MM, DD, HH, MM, SS
.
const fechaEspecifica = new Date(2023, 8, 20); // 20 de septiembre de 2023
También se puede crear un objeto Date a partir de una cadena de texto.
const fechaDesdeCadena = new Date("2023-09-20T10:20:30Z");
Finalmente, también podemos crear un objeto Date a partir de un número que representa milisegundos desde la época Unix.
const fechaDesdeMilisegundos = new Date(1672531199000); // 1 de enero de 2023
Estos dos últimos no resultan muy legibles, pero son muy útiles cuando estamos trabajando con fechas previamente almacenadas (por ejemplo en una base de datos)
Obtención de componentes de la fecha
Una vez creado un objeto Date, podemos obtener sus componentes individuales (como el año, mes, día, hora, minuto y segundo):
const fecha = new Date(2023, 8, 20, 15, 30, 0);
console.log(fecha.getFullYear()); // 2023
console.log(fecha.getMonth()); // 8 (septiembre, los meses inician en 0)
console.log(fecha.getDate()); // 20
console.log(fecha.getHours()); // 15
console.log(fecha.getMinutes()); // 30
console.log(fecha.getSeconds()); // 0
Recuerda las colecciones en JavaScript empiezan en 0. Así que los meses van de 0 (enero) al 11 (diciembre)
Operaciones con Fechas
Podemos realizar operaciones aritméticas con los objetos Date, por ejemplo cálculos de diferencias y adiciones.
Diferencia entre fechas
Para calcular la diferencia entre dos fechas, podemos restarlas para obtener la diferencia en milisegundos.
const fecha1 = new Date('2024-08-14');
const fecha2 = new Date('2024-08-21');
const diferencia = fecha2 - fecha1; // Diferencia en milisegundos
const diferenciaEnDias = diferencia / (1000 * 60 * 60 * 24);
console.log(diferenciaEnDias); // 7 días
Sumar o restar tiempo
Para sumar o restar tiempo a una fecha, puedes usar los métodos set
correspondientes.
const fecha = new Date();
fecha.setDate(fecha.getDate() + 10); // Suma 10 días
console.log(fecha);
fecha.setMonth(fecha.getMonth() - 1); // Resta 1 mes
console.log(fecha);
Comparación de fechas
Los objetos Date se pueden comparar directamente utilizando operadores de comparación (internamente, se convierten a milisegundos cuando se evalúan),
const fecha1 = new Date(2023, 8, 20);
const fecha2 = new Date(2023, 8, 21);
console.log(fecha1 < fecha2); // true
console.log(fecha1 > fecha2); // false
Métodos para manipular Date
JavaScript proporciona muchos métodos para trabajar con Date.
Lo vemos en la entrada
Zonas horarias
Las fechas y horas en JavaScript se ven afectadas por las zonas horarias (lo cuál puede ser un auténtico quebradedo de cabeza en muchas circustancias).
Generalmente, el objeto Date utiliza la zona horaria del entorno de ejecución. Para trabajar con UTC (Tiempo Universal Coordinado), usa los que contienen UTC
.
const fecha = new Date();
console.log(fecha.toLocaleString()); // Fecha y hora en zona horaria local
console.log(fecha.toUTCString()); // Fecha y hora en UTC
UTC es el estándar de tiempo global usado como referencia para sincronizar relojes en todo el mundo. No se ajusta a zonas horarias y es independiente de la rotación de la Tierra.