javascript-tipo-date

El tipo Date en JavaScript

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.

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.