Ajuste automático de fechas en JavaScript
JavaScript tiene una característica muy interesante y útil:
si al crear un objeto Date
se especifica un momento en el tiempo incorrecto,
se recalculará automáticamente a uno correcto.
Veamos un ejemplo.
Como sabes, no existe la fecha 35 de enero.
El día máximo posible de enero es 31.
Resulta que nuestra fecha 35 de enero
tiene 4 días de más. JavaScript en tal
caso simplemente sumará esos 4 días
extra al mes siguiente:
let date = new Date(2018, 0, 35);
console.log(date); // resultará el 4 de febrero
Se pueden especificar no solo días extra, sino
también meses. En este caso, hay que recordar que los meses
comienzan desde cero, por lo que el último mes
válido es el 11. Si se especifica el mes 12,
se obtendrá enero del año siguiente:
let date = new Date(2018, 12, 1); // especificamos el mes 12
console.log(date); // resultará el 1 de enero de 2019
El ajuste descrito también funciona hacia atrás.
Como sabes, el día mínimo
del mes es el día número 1.
Por lo tanto, si se especifica el día número 0,
se obtendrá el último día del mes anterior:
let date = new Date(2018, 1, 0); // especificamos el día cero
console.log(date); // resultará el 31 de enero
También se pueden especificar valores negativos
para días y meses. En este caso, hay que recordar que
el día mínimo tiene el número 1, y
el mes mínimo tiene el número 0. Esto significa
que el día menos uno corresponde al 2
día contando desde el final del mes anterior, y el mes
menos uno corresponde simplemente al último
mes del año anterior:
let date = new Date(2018, 1, -1); // especificamos -1 día
console.log(date); // resultará el 30 de enero
let date = new Date(2018, -1, 1); // especificamos -1 mes
console.log(date); // resultará el 1 de diciembre de 2017
Todo lo dicho anteriormente funciona de manera análoga con horas, minutos y segundos:
let date = new Date(2018, 0, 1, 24, 0, 0); // especificamos la hora 24
console.log(date); // resultará el 2 de enero, 0 horas
let date = new Date(2018, 0, 1, 25, 0, 0); // especificamos la hora 25
console.log(date); // resultará el 2 de enero, 1 hora
Determina a qué fecha JavaScript convertirá el siguiente momento en el tiempo:
let date = new Date(2018, 1, 35);
console.log(date); // ¿qué fecha será?
Determina a qué fecha JavaScript convertirá el siguiente momento en el tiempo:
let date = new Date(2018, 15, 1);
console.log(date); // ¿qué fecha será?
Determina a qué fecha JavaScript convertirá el siguiente momento en el tiempo:
let date = new Date(2018, 3, 31);
console.log(date); // ¿qué fecha será?
Determina a qué fecha JavaScript convertirá el siguiente momento en el tiempo:
let date = new Date(2018, 1, 31);
console.log(date); // ¿qué fecha será?
Determina a qué fecha JavaScript convertirá el siguiente momento en el tiempo:
let date = new Date(2018, 12, 33);
console.log(date); // ¿qué fecha será?
Determina a qué fecha JavaScript convertirá el siguiente momento en el tiempo:
let date = new Date(2018, 33, 33);
console.log(date); // ¿qué fecha será?
Determina a qué fecha JavaScript convertirá el siguiente momento en el tiempo:
let date = new Date(2018, 5, 0);
console.log(date); // ¿qué fecha será?
Determina a qué fecha JavaScript convertirá el siguiente momento en el tiempo:
let date = new Date(2018, 0, 0);
console.log(date); // ¿qué fecha será?
Determina a qué fecha JavaScript convertirá el siguiente momento en el tiempo:
let date = new Date(2018, -12, -33);
console.log(date); // ¿qué fecha será?
Determina a qué fecha JavaScript convertirá el siguiente momento en el tiempo:
let date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // ¿qué fecha será?
Determina a qué fecha JavaScript convertirá el siguiente momento en el tiempo:
let date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // ¿qué fecha será?
Determina a qué fecha JavaScript convertirá el siguiente momento en el tiempo:
let date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // ¿qué fecha será?