Corecția automată a datelor în JavaScript
JavaScript are o caracteristică foarte interesantă și utilă:
dacă la crearea obiectului Date
a fost specificat un moment de timp incorect -
acesta va fi recalculat automat în unul corect.
Să ne uităm la un exemplu.
După cum știți, data de 35 ianuarie nu există.
Ziua maximă posibilă a lunii ianuarie este 31.
Rezultă că data noastră de 35 ianuarie
are 4 zile în plus. JavaScript în astfel de
caz va adăuga pur și simplu aceste 4
zile în plus la luna următoare:
let date = new Date(2018, 0, 35);
console.log(date); // va rezulta 4 februarie
Pot fi specificate nu doar zile în plus, ci
și luni. În acest caz, trebuie reținut că lunile
încep de la zero, ceea ce înseamnă că ultima lună corectă
este 11-lea. Dacă specificăm 12-lea
luna, va rezulta ianuarie a anului următor:
let date = new Date(2018, 12, 1); // specificăm luna a 12-a
console.log(date); // va rezulta 1 ianuarie 2019
Corecția descrisă funcționează și în direcția
descrescătoare. După cum știți, cea mai mică
zi a lunii este ziua cu numărul 1.
Prin urmare, dacă specificați ziua cu numărul 0,
va rezulta ultima zi a lunii precedente:
let date = new Date(2018, 1, 0); // specificăm ziua zero
console.log(date); // va rezulta 31 ianuarie
De asemenea, pot fi specificate valori negative
pentru zile și luni. În acest caz, trebuie reținut că
ziua minimă are numărul 1, iar
luna minimă - numărul 0. Aceasta înseamnă
că prima zi negativă va cădea în 2
zile de la sfârșitul lunii precedente, iar prima
luna negativă va cădea pur și simplu în ultima
lună a anului precedent:
let date = new Date(2018, 1, -1); // specificăm -1 zi
console.log(date); // va rezulta 30 ianuarie
let date = new Date(2018, -1, 1); // specificăm -1 lună
console.log(date); // va rezulta 1 decembrie 2017
Tot ce s-a spus mai sus funcționează similar cu orele, minutele și secundele:
let date = new Date(2018, 0, 1, 24, 0, 0); // specificăm ora a 24-a
console.log(date); // va rezulta 2 ianuarie, 0 ore
let date = new Date(2018, 0, 1, 25, 0, 0); // specificăm ora a 25-a
console.log(date); // va rezulta 2 ianuarie, 1 oră
Determinați în ce dată JavaScript va transforma următorul moment de timp:
let date = new Date(2018, 1, 35);
console.log(date); // ce dată va fi?
Determinați în ce dată JavaScript va transforma următorul moment de timp:
let date = new Date(2018, 15, 1);
console.log(date); // ce dată va fi?
Determinați în ce dată JavaScript va transforma următorul moment de timp:
let date = new Date(2018, 3, 31);
console.log(date); // ce dată va fi?
Determinați în ce dată JavaScript va transforma următorul moment de timp:
let date = new Date(2018, 1, 31);
console.log(date); // ce dată va fi?
Determinați în ce dată JavaScript va transforma următorul moment de timp:
let date = new Date(2018, 12, 33);
console.log(date); // ce dată va fi?
Determinați în ce dată JavaScript va transforma următorul moment de timp:
let date = new Date(2018, 33, 33);
console.log(date); // ce dată va fi?
Determinați în ce dată JavaScript va transforma următorul moment de timp:
let date = new Date(2018, 5, 0);
console.log(date); // ce dată va fi?
Determinați în ce dată JavaScript va transforma următorul moment de timp:
let date = new Date(2018, 0, 0);
console.log(date); // ce dată va fi?
Determinați în ce dată JavaScript va transforma următorul moment de timp:
let date = new Date(2018, -12, -33);
console.log(date); // ce dată va fi?
Determinați în ce dată JavaScript va transforma următorul moment de timp:
let date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // ce dată va fi?
Determinați în ce dată JavaScript va transforma următorul moment de timp:
let date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // ce dată va fi?
Determinați în ce dată JavaScript va transforma următorul moment de timp:
let date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // ce dată va fi?