Kuupäevade automaatne korrigeerimine JavaScriptis

JavaScriptil on väga huvitav ja kasulik omadus: kui Date objekti loomisel määrati vale ajahetk - arvutatakse see automaatselt õigeks. Vaatame seda näitega.

Nagu teate, kuupäeva 35 jaanuarit ei eksisteeri. Maksimaalne võimalik jaanuari päev on 31. See tähendab, et meie kuupäeval 35 jaanuar on 4 liigset päeva. JavaScript sellisel juhul lihtsalt lisab need liigsed 4 päeva järgmisele kuule:

javascriptlet date = new Date(2018, 0, 35);
console.log(date); // saame 4. veebruar

Võib määrata mitte ainult liigseid päevi, vaid ka kuid. Seda tuleb meeles pidada, et kuud algavad nullist, mis tähendab, et viimane korrektne kuu on 11-s. Kui määrata 12-s kuu, saame järgmise aasta jaanuari:

javascriptlet date = new Date(2018, 12, 1); // määrame 12. kuu
console.log(date); // saame 1. jaanuar 2019

Kirjeldatud korrigeerimine töötab ka väiksema poole. Nagu teate, kõige väiksem päev kuus on päev numbriga 1. Seega, kui määrata päev numbriga 0, saame eelmise kuu viimase päeva:

javascriptlet date = new Date(2018, 1, 0); // määrame nullpäeva
console.log(date); // saame 31. jaanuar

Samuti saab määrata negatiivseid päevade ja kuude väärtusi. Seda tuleb meeles pidada, et minimaalne päev on number 1, ja minimaalne kuu - number 0. See tähendab, et miinus esimene päev langeb 2 päevale eelmise kuu lõpust, ja miinus esimene kuu langeb lihtsalt eelmise aasta viimasele kuule:

javascriptlet date = new Date(2018, 1, -1); // määrame -1 päeva
console.log(date); // saame 30. jaanuar
javascriptlet date = new Date(2018, -1, 1); // määrame -1 kuu
console.log(date); // saame 1. detsember 2017

Kõik ülaltoodu kehtib samuti tundide, minutite ja sekundite kohta:

javascriptlet date = new Date(2018, 0, 1, 24, 0, 0); // määrame 24. tunni
console.log(date); // saame 2. jaanuar, 0 tundi
javascriptlet date = new Date(2018, 0, 1, 25, 0, 0); // määrame 25. tunni
console.log(date); // saame 2. jaanuar, 1 tund
Задание 1

Määrake, milliseks kuupäevaks JavaScript teisendab järgmise ajahetke:

javascriptlet date = new Date(2018, 1, 35);
console.log(date); // milline kuupäev saab?
Задание 2

Määrake, milliseks kuupäevaks JavaScript teisendab järgmise ajahetke:

javascriptlet date = new Date(2018, 15, 1);
console.log(date); // milline kuupäev saab?
Задание 3

Määrake, milliseks kuupäevaks JavaScript teisendab järgmise ajahetke:

javascriptlet date = new Date(2018, 3, 31);
console.log(date); // milline kuupäev saab?
Задание 4

Määrake, milliseks kuupäevaks JavaScript teisendab järgmise ajahetke:

javascriptlet date = new Date(2018, 1, 31);
console.log(date); // milline kuupäev saab?
Задание 5

Määrake, milliseks kuupäevaks JavaScript teisendab järgmise ajahetke:

javascriptlet date = new Date(2018, 12, 33);
console.log(date); // milline kuupäev saab?
Задание 6

Määrake, milliseks kuupäevaks JavaScript teisendab järgmise ajahetke:

javascriptlet date = new Date(2018, 33, 33);
console.log(date); // milline kuupäev saab?
Задание 7

Määrake, milliseks kuupäevaks JavaScript teisendab järgmise ajahetke:

javascriptlet date = new Date(2018, 5, 0);
console.log(date); // milline kuupäev saab?
Задание 8

Määrake, milliseks kuupäevaks JavaScript teisendab järgmise ajahetke:

javascriptlet date = new Date(2018, 0, 0);
console.log(date); // milline kuupäev saab?
Задание 9

Määrake, milliseks kuupäevaks JavaScript teisendab järgmise ajahetke:

javascriptlet date = new Date(2018, -12, -33);
console.log(date); // milline kuupäev saab?
Задание 10

Määrake, milliseks kuupäevaks JavaScript teisendab järgmise ajahetke:

javascriptlet date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // milline kuupäev saab?
Задание 11

Määrake, milliseks kuupäevaks JavaScript teisendab järgmise ajahetke:

javascriptlet date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // milline kuupäev saab?
Задание 12

Määrake, milliseks kuupäevaks JavaScript teisendab järgmise ajahetke:

javascriptlet date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // milline kuupäev saab?