Automatinis datų koreguojimas JavaScript

JavaScript turi labai įdomią ir naudingą savybę: jei kuriant Date objektą būtų nurodytas neteisingas laiko momentas - jis automatiškai bus perskaičiuotas į teisingą. Pažiūrėkime pavyzdžiu.

Kaip žinote, 35 sausio dienos nėra. Maksimali galima sausio diena - 31. Pasirodo, kad mūsų 35 sausio data turi 4 papildomas dienas. JavaScript tokiu atveju tiesiog pridės šias papildomas 4 dienas prie kito mėnesio:

javascriptlet date = new Date(2018, 0, 35);
console.log(date); // gausis vasario 4 d.

Galima nurodyti ne tik perteklines dienas, bet ir mėnesius. Tuo pat metu reikia atsiminti, kad mėnesiai prasideda nuo nulio, o tai reiškia, kad paskutinis teisingas mėnuo - 11-tas. Jei nurodysite 12-tą mėnesį, tai gausite kitų metų sausį:

javascriptlet date = new Date(2018, 12, 1); // nurodome 12-tą mėnesį
console.log(date); // gausis 2019 metų sausio 1 d.

Aprašytas koregavimas veikia ir mažėjimo kryptimi. Kaip žinote, pati mažiausia mėnesio diena yra diena su numeriu 1. Todėl, jei nurodysite dieną su numeriu 0, gausite paskutinę praėjusio mėnesio dieną:

javascriptlet date = new Date(2018, 1, 0); // nurodome nulinę dieną
console.log(date); // gausis sausio 31 d.

Taip pat galima nurodyti neigiamas dienų ir mėnesių reikšmes. Tuo pat metu reikia atsiminti, kad mažiausia diena turi numerį 1, o mažiausias mėnuo - numerį 0. Tai reiškia, kad minus pirmoji diena patenka į 2 dieną nuo praėjusio mėnesio pabaigos, o minus pirmasis mėnuo patenka tiesiog į paskutinį praėjusių metų mėnesį:

javascriptlet date = new Date(2018, 1, -1); // nurodome -1 dieną
console.log(date); // gausis sausio 30 d.
javascriptlet date = new Date(2018, -1, 1); // nurodome -1 mėnesį
console.log(date); // gausis 2017 metų gruodžio 1 d.

Visa tai, kas pasakyta aukščiau, analogiškai veikia su valandomis, minutėmis ir sekundėmis:

javascriptlet date = new Date(2018, 0, 1, 24, 0, 0); // nurodome 24-ą valandą
console.log(date); // gausis sausio 2 d., 0 valandų
javascriptlet date = new Date(2018, 0, 1, 25, 0, 0); // nurodome 25-ą valandą
console.log(date); // gausis sausio 2 d., 1 valanda
Задание 1

Nustatykite, į kokią datą JavaScript pakeis šį laiko momentą:

javascriptlet date = new Date(2018, 1, 35);
console.log(date); // kokia data bus?
Задание 2

Nustatykite, į kokią datą JavaScript pakeis šį laiko momentą:

javascriptlet date = new Date(2018, 15, 1);
console.log(date); // kokia data bus?
Задание 3

Nustatykite, į kokią datą JavaScript pakeis šį laiko momentą:

javascriptlet date = new Date(2018, 3, 31);
console.log(date); // kokia data bus?
Задание 4

Nustatykite, į kokią datą JavaScript pakeis šį laiko momentą:

javascriptlet date = new Date(2018, 1, 31);
console.log(date); // kokia data bus?
Задание 5

Nustatykite, į kokią datą JavaScript pakeis šį laiko momentą:

javascriptlet date = new Date(2018, 12, 33);
console.log(date); // kokia data bus?
Задание 6

Nustatykite, į kokią datą JavaScript pakeis šį laiko momentą:

javascriptlet date = new Date(2018, 33, 33);
console.log(date); // kokia data bus?
Задание 7

Nustatykite, į kokią datą JavaScript pakeis šį laiko momentą:

javascriptlet date = new Date(2018, 5, 0);
console.log(date); // kokia data bus?
Задание 8

Nustatykite, į kokią datą JavaScript pakeis šį laiko momentą:

javascriptlet date = new Date(2018, 0, 0);
console.log(date); // kokia data bus?
Задание 9

Nustatykite, į kokią datą JavaScript pakeis šį laiko momentą:

javascriptlet date = new Date(2018, -12, -33);
console.log(date); // kokia data bus?
Задание 10

Nustatykite, į kokią datą JavaScript pakeis šį laiko momentą:

javascriptlet date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // kokia data bus?
Задание 11

Nustatykite, į kokią datą JavaScript pakeis šį laiko momentą:

javascriptlet date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // kokia data bus?
Задание 12

Nustatykite, į kokią datą JavaScript pakeis šį laiko momentą:

javascriptlet date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // kokia data bus?