Introducción a las fechas de JavaScript - Curso de JavaScript de cero a máster - Capítulo 45

Comenzamos tema nuevo, las fechas en JavaScript.

El objeto Date()

En JavaScript tenemos el objeto integrado Date(), el cual nos sirve para trabajar con fechas.

Palabra del lenguaje nº 58 encontrada.
Date() es un objeto integrado de JavaScript que nos permite manejar fechas.

Podemos instanciar objetos de Date() de esta forma:

Código JavaScript

let ahora = new Date();

Si omitimos el uso de la palabra new, nos crea un string con la fecha y no un objeto, lo cual, hace que tengamos acceso a los métodos predefinidos de String, pero no de Date().

Veamos el tipo de dato que devuelven ambos:

Código JavaScript

let fechaString = Date();
let fechaDate = new Date();

console.log(typeof fechaString);
console.log(typeof fechaDate);

terminal Resultado en la consola terminal

string
object

Date() sin argumentos devuelve la fecha en el momento de la ejecución. Por lo tanto, si vas recargando el navegador, esta va cambiando.

Código JavaScript

let ahora = new Date();

terminal Resultado en la consola terminal

Sun Feb 27 2022 17:35:11 GMT+0100 (hora estándar de Europa central)

Milisegundos en fechas

Si le damos al objeto un primer argumento de tipo numérico, estamos estableciendo una cantidad de milisegundos desde el 1 de enero de 1970.

Cada mil milisegundos equivalen a 1 segundo, por lo tanto, si ponemos 1000 milisegundos, nos muestra un segundo más de esa fecha que tiene JavaScript por defecto.

Código JavaScript

let fecha = new Date(1000);

console.log(fecha);

terminal Resultado en la consola terminal

Thu Jan 01 1970 01:00:01 GMT+0100 (hora estándar de Europa central)

Voy a escribir una serie de constantes que se pueden utilizar en fechas. Yo las voy a empezar a utilizar con la fecha por defecto de JavaScript.

Código JavaScript

const segundoMilisegundos = 1000; // 1.000 ms (1 s)
const minutoMilisegundos = 60 * segundoMilisegundos; // 60.000 ms (60 s)
const horaMilisegundos = 60 * minutoMilisegundos; // 3.600.000 ms (3600 s)
const diaMilisegundos = 24 * horaMilisegundos; // 86.400.000 ms (86.400 s)

let fecha1 = new Date(segundoMilisegundos);
let fecha2 = new Date(minutoMilisegundos);
let fecha3 = new Date(horaMilisegundos);
let fecha4 = new Date(diaMilisegundos);

console.log("Añado un segundo a la fecha por defecto de JS:\n" + fecha1);
console.log("Añado un minuto a la fecha por defecto de JS:\n" + fecha2);
console.log("Añado una hora a la fecha por defecto de JS:\n" + fecha3);
console.log("Añado un día a la fecha por defecto de JS:\n" + fecha4);

terminal Resultado en la consola terminal

Añado un segundo a la fecha por defecto de JS:
Thu Jan 01 1970 01:00:01 GMT+0100 (hora estándar de Europa central)
Añado un minuto a la fecha por defecto de JS:
Thu Jan 01 1970 01:01:00 GMT+0100 (hora estándar de Europa central)
Añado una hora a la fecha por defecto de JS:
Thu Jan 01 1970 02:00:00 GMT+0100 (hora estándar de Europa central)
Añado un día a la fecha por defecto de JS:
Fri Jan 02 1970 01:00:00 GMT+0100 (hora estándar de Europa central)

Podemos sumar incluso estas fechas (no solo a la fecha por defecto de JavaScript), por ejemplo, quiero añadir a la fecha diez días. Esto ya es algo más útil.

Código JavaScript

let fecha = new Date(diaMilisegundos * 10);

console.log(fecha);

terminal Resultado en la consola terminal

Sun Jan 11 1970 01:00:00 GMT+0100 (hora estándar de Europa central)

También podemos restar cantidades a las fechas así de fácil:

Código JavaScript

let fecha = new Date(-diaMilisegundos * 10);

console.log(fecha);

terminal Resultado en la consola terminal

Mon Dec 22 1969 01:00:00 GMT+0100 (hora estándar de Europa central)

Fechas personalizadas

Por supuesto, JavaScript nos deja trabajar con cualquier fecha, no solo con la que nos da por defecto.

Código JavaScript

let fecha = new Date("2022-09-29");

console.log(fecha);

terminal Resultado en la consola terminal

Thu Sep 29 2022 02:00:00 GMT+0200 (hora de verano de Europa central)

Por defecto, me muestra siempre la fecha de esta forma, y si no le doy algún valor como la hora, me pone esa automáticamente (la que está en el resultado de la consola).

Argumentos en la fecha de JavaScript

Podemos especificar argumentos separados para cada sección de una fecha. Esto se hace con tipo number.

Si ponemos un solo número, ya sabemos que nos va a interpretar esto como milisegundos:

Código JavaScript

let fecha = new Date(2022);

console.log(fecha);

terminal Resultado en la consola terminal

Thu Jan 01 1970 01:00:02 GMT+0100 (hora estándar de Europa central)

Por lo tanto, tenemos que indicarle un mínimo de dos argumentos a la fecha.

Código JavaScript

let fecha = new Date(2022,11);

console.log(fecha);

De esta forma, lo que hacemos es indicarle el año y el mes.

terminal Resultado en la consola terminal

¿Te has fijado que le he puesto el mes 11 y me sale como diciembre?

No es un error, JavaScript cuenta los meses del 0 (enero) al 11 (diciembre).

Thu Dec 01 2022 00:00:00 GMT+0100 (hora estándar de Europa central)

Si añadimos un tercer parámetro podremos indicar el día:

Código JavaScript

let fecha = new Date(2022,11,25);

console.log(fecha);

terminal Resultado en la consola terminal

Thu Dec 25 2022 00:00:00 GMT+0100 (hora estándar de Europa central)

Con otro parámetro más indicaremos la hora en formato 24 horas:

Código JavaScript

let fecha = new Date(2022,11,25,19);

console.log(fecha);

terminal Resultado en la consola terminal

Sun Dec 25 2022 19:00:00 GMT+0100 (hora estándar de Europa central)

Con un parámetro más añadimos los minutos:

Código JavaScript

let fecha = new Date(2022,11,25,19,37);

console.log(fecha);

terminal Resultado en la consola terminal

Sun Dec 25 2022 19:37:00 GMT+0100 (hora estándar de Europa central)

Incluso podemos añadir los segundos con otro parámetro más:

Código JavaScript

let fecha = new Date(2022,11,25,19,37,15);

console.log(fecha);

terminal Resultado en la consola terminal

Sun Dec 25 2022 19:37:15 GMT+0100 (hora estándar de Europa central)

Aun queda un parámetro extra para añadir incluso los milisegundos:

Código JavaScript

let fecha = new Date(2022,11,25,19,37,15,1000);

console.log(fecha);

terminal Resultado en la consola terminal

No obstante, estos no se muestran, solo hacen avanzar los segundos equivalentes al tiempo en milisegundos. Por ejemplo, al añadir 1000 milisegundos, he hecho pasar los segundos de 15 a 16.

Sun Dec 25 2022 19:37:16 GMT+0100 (hora estándar de Europa central)