Päivämäärien automaattinen korjaus JavaScriptissä

JavaScriptillä on erittäin mielenkiintoinen ja hyödyllinen ominaisuus: jos Date-oliota luotaessa on määritetty virheellinen ajanhetki - se lasketaan automaattisesti oikeaksi. Katsotaanpa esimerkkiä.

Kuten tiedät, 35. tammikuuta ei ole olemassa. Tammikuun suurin mahdollinen päivä on 31. Se tarkoittaa, että päivämäärällämme 35 tammikuuta on 4 ylimääräistä päivää. JavaScript lisää tällaisessa tapauksessa yksinkertaisesti nämä ylimääräiset 4 päivää seuraavaan kuukauteen:

javascriptlet date = new Date(2018, 0, 35);
console.log(date); // tuloksena on 4. helmikuuta

Voi määrittää ei vain ylimääräisiä päiviä, vaan myös kuukausia. Tässä on muistettava, että kuukaudet alkavat nollasta, mikä tarkoittaa, että viimeinen oikea kuukausi on 11. Jos määritetään 12. kuukausi, saadaan seuraavan vuoden tammikuu:

javascriptlet date = new Date(2018, 12, 1); // määritetään 12. kuukausi
console.log(date); // tuloksena on 1. tammikuuta 2019

Kuvattu korjaus toimii myös alaspäin. Kuten tiedät, kuukauden pienin mahdollinen päivä on päivä numerolla 1. Sen vuoksi, jos määritetään päivä numerolla 0, saadaan edellisen kuukauden viimeinen päivä:

javascriptlet date = new Date(2018, 1, 0); // määritetään nollas päivä
console.log(date); // tuloksena on 31. tammikuuta

Voit myös määrittää negatiivisia päivä- ja kuukausiarvoja. Tässä on muistettava, että pienimmän päivän numero on 1, ja pienimmän kuukauden numero on 0. Tämä tarkoittaa, että miinus ensimmäinen päivä osuu 2 päivään edellisen kuukauden lopusta, ja miinus ensimmäinen kuukausi osuu yksinkertaisesti edellisen vuoden viimeiseen kuukauteen:

javascriptlet date = new Date(2018, 1, -1); // määritetään -1 päivä
console.log(date); // tuloksena on 30. tammikuuta
javascriptlet date = new Date(2018, -1, 1); // määritetään -1 kuukausi
console.log(date); // tuloksena on 1. joulukuuta 2017

Kaikki edellä mainittu toimii vastaavasti tunteille, minuuteille ja sekunneille:

javascriptlet date = new Date(2018, 0, 1, 24, 0, 0); // määritetään 24. tunti
console.log(date); // tuloksena on 2. tammikuuta, 0 tuntia
javascriptlet date = new Date(2018, 0, 1, 25, 0, 0); // määritetään 25. tunti
console.log(date); // tuloksena on 2. tammikuuta, 1 tunti
Задание 1

Määritä, mihin päivämäärään JavaScript muuntaa seuraavan ajanhetken:

javascriptlet date = new Date(2018, 1, 35);
console.log(date); // mikä päivämäärä tulee?
Задание 2

Määritä, mihin päivämäärään JavaScript muuntaa seuraavan ajanhetken:

javascriptlet date = new Date(2018, 15, 1);
console.log(date); // mikä päivämäärä tulee?
Задание 3

Määritä, mihin päivämäärään JavaScript muuntaa seuraavan ajanhetken:

javascriptlet date = new Date(2018, 3, 31);
console.log(date); // mikä päivämäärä tulee?
Задание 4

Määritä, mihin päivämäärään JavaScript muuntaa seuraavan ajanhetken:

javascriptlet date = new Date(2018, 1, 31);
console.log(date); // mikä päivämäärä tulee?
Задание 5

Määritä, mihin päivämäärään JavaScript muuntaa seuraavan ajanhetken:

javascriptlet date = new Date(2018, 12, 33);
console.log(date); // mikä päivämäärä tulee?
Задание 6

Määritä, mihin päivämäärään JavaScript muuntaa seuraavan ajanhetken:

javascriptlet date = new Date(2018, 33, 33);
console.log(date); // mikä päivämäärä tulee?
Задание 7

Määritä, mihin päivämäärään JavaScript muuntaa seuraavan ajanhetken:

javascriptlet date = new Date(2018, 5, 0);
console.log(date); // mikä päivämäärä tulee?
Задание 8

Määritä, mihin päivämäärään JavaScript muuntaa seuraavan ajanhetken:

javascriptlet date = new Date(2018, 0, 0);
console.log(date); // mikä päivämäärä tulee?
Задание 9

Määritä, mihin päivämäärään JavaScript muuntaa seuraavan ajanhetken:

javascriptlet date = new Date(2018, -12, -33);
console.log(date); // mikä päivämäärä tulee?
Задание 10

Määritä, mihin päivämäärään JavaScript muuntaa seuraavan ajanhetken:

javascriptlet date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // mikä päivämäärä tulee?
Задание 11

Määritä, mihin päivämäärään JavaScript muuntaa seuraavan ajanhetken:

javascriptlet date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // mikä päivämäärä tulee?
Задание 12

Määritä, mihin päivämäärään JavaScript muuntaa seuraavan ajanhetken:

javascriptlet date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // mikä päivämäärä tulee?