A dátumok automatikus korrekciója JavaScriptben

A JavaScriptnek van egy nagyon érdekes és hasznos sajátossága: ha egy Date objektum létrehozásakor helytelen időpontot adunk meg - az automatikusan át lesz számítva helyesre. Nézzük meg egy példán.

Mint tudod, 35 január nem létezik. A január legnagyobb lehetséges napja a 31. Vagyis a 35 január 4 nappal több. A JavaScript ebben az esetben egyszerűen hozzáadja ezt a felesleges 4 napot a következő hónaphoz:

javascriptlet date = new Date(2018, 0, 35);
console.log(date); // 4 február lesz

Nem csak a felesleges napokat, hanem a hónapokat is meg lehet adni. Ebben az esetben emlékeznünk kell arra, hogy a hónapok nullától kezdődnek, ami azt jelenti, hogy az utolsó helyes hónap a 11-edik. Ha a 12-edik hónapot adjuk meg, akkor a következő év januárját kapjuk:

javascriptlet date = new Date(2018, 12, 1); // a 12-ik hónapot adjuk meg
console.log(date); // 2019. január 1 lesz

A leírt korrekció a másik irányba is működik. Mint tudod, a hónap legkisebb napja az 1-es sorszámú nap. Ezért, ha a 0-ás sorszámú napot adjuk meg, akkor az előző hónap utolsó napját kapjuk:

javascriptlet date = new Date(2018, 1, 0); // a nulladik napot adjuk meg
console.log(date); // január 31 lesz

Negatív értékeket is megadhatunk a napoknál és a hónapoknál. Ebben az esetben emlékeznünk kell arra, hogy a legkisebb nap sorszáma 1, a legkisebb hónapé pedig 0. Ez azt jelenti, hogy a mínusz első nap az előző hónap 2 utolsó napjába esik, a mínusz első hónap pedig az előző év utolsó hónapjába esik:

javascriptlet date = new Date(2018, 1, -1); // -1 napot adjuk meg
console.log(date); // január 30 lesz
javascriptlet date = new Date(2018, -1, 1); // -1 hónapot adjuk meg
console.log(date); // 2017. december 1 lesz

A fentiekben elmondottak hasonlóan működnek az órákra, percekre és másodpercekre is:

javascriptlet date = new Date(2018, 0, 1, 24, 0, 0); // a 24-ik órát adjuk meg
console.log(date); // január 2, 0 óra lesz
javascriptlet date = new Date(2018, 0, 1, 25, 0, 0); // a 25-ik órát adjuk meg
console.log(date); // január 2, 1 óra lesz
Задание 1

Határozd meg, hogy a JavaScript milyen dátumra alakítja át a következő időpontot:

javascriptlet date = new Date(2018, 1, 35);
console.log(date); // milyen dátum lesz?
Задание 2

Határozd meg, hogy a JavaScript milyen dátumra alakítja át a következő időpontot:

javascriptlet date = new Date(2018, 15, 1);
console.log(date); // milyen dátum lesz?
Задание 3

Határozd meg, hogy a JavaScript milyen dátumra alakítja át a következő időpontot:

javascriptlet date = new Date(2018, 3, 31);
console.log(date); // milyen dátum lesz?
Задание 4

Határozd meg, hogy a JavaScript milyen dátumra alakítja át a következő időpontot:

javascriptlet date = new Date(2018, 1, 31);
console.log(date); // milyen dátum lesz?
Задание 5

Határozd meg, hogy a JavaScript milyen dátumra alakítja át a következő időpontot:

javascriptlet date = new Date(2018, 12, 33);
console.log(date); // milyen dátum lesz?
Задание 6

Határozd meg, hogy a JavaScript milyen dátumra alakítja át a következő időpontot:

javascriptlet date = new Date(2018, 33, 33);
console.log(date); // milyen dátum lesz?
Задание 7

Határozd meg, hogy a JavaScript milyen dátumra alakítja át a következő időpontot:

javascriptlet date = new Date(2018, 5, 0);
console.log(date); // milyen dátum lesz?
Задание 8

Határozd meg, hogy a JavaScript milyen dátumra alakítja át a következő időpontot:

javascriptlet date = new Date(2018, 0, 0);
console.log(date); // milyen dátum lesz?
Задание 9

Határozd meg, hogy a JavaScript milyen dátumra alakítja át a következő időpontot:

javascriptlet date = new Date(2018, -12, -33);
console.log(date); // milyen dátum lesz?
Задание 10

Határozd meg, hogy a JavaScript milyen dátumra alakítja át a következő időpontot:

javascriptlet date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // milyen dátum lesz?
Задание 11

Határozd meg, hogy a JavaScript milyen dátumra alakítja át a következő időpontot:

javascriptlet date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // milyen dátum lesz?
Задание 12

Határozd meg, hogy a JavaScript milyen dátumra alakítja át a következő időpontot:

javascriptlet date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // milyen dátum lesz?