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:
javascriptlet 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:
javascriptlet 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:
javascriptlet 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:
javascriptlet date = new Date(2018, 1, -1); // specificăm -1 zi
console.log(date); // va rezulta 30 ianuarie
javascriptlet 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:
javascriptlet date = new Date(2018, 0, 1, 24, 0, 0); // specificăm ora a 24-a
console.log(date); // va rezulta 2 ianuarie, 0 ore
javascriptlet 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:
javascriptlet 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:
javascriptlet 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:
javascriptlet 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:
javascriptlet 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:
javascriptlet 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:
javascriptlet 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:
javascriptlet 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:
javascriptlet 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:
javascriptlet 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:
javascriptlet 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:
javascriptlet 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:
javascriptlet date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // ce dată va fi?