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:
let 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:
let 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ä:
let 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:
let date = new Date(2018, 1, -1); // määritetään -1 päivä
console.log(date); // tuloksena on 30. tammikuuta
let 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:
let date = new Date(2018, 0, 1, 24, 0, 0); // määritetään 24. tunti
console.log(date); // tuloksena on 2. tammikuuta, 0 tuntia
let date = new Date(2018, 0, 1, 25, 0, 0); // määritetään 25. tunti
console.log(date); // tuloksena on 2. tammikuuta, 1 tunti
Määritä, mihin päivämäärään JavaScript muuntaa seuraavan ajanhetken:
let date = new Date(2018, 1, 35);
console.log(date); // mikä päivämäärä tulee?
Määritä, mihin päivämäärään JavaScript muuntaa seuraavan ajanhetken:
let date = new Date(2018, 15, 1);
console.log(date); // mikä päivämäärä tulee?
Määritä, mihin päivämäärään JavaScript muuntaa seuraavan ajanhetken:
let date = new Date(2018, 3, 31);
console.log(date); // mikä päivämäärä tulee?
Määritä, mihin päivämäärään JavaScript muuntaa seuraavan ajanhetken:
let date = new Date(2018, 1, 31);
console.log(date); // mikä päivämäärä tulee?
Määritä, mihin päivämäärään JavaScript muuntaa seuraavan ajanhetken:
let date = new Date(2018, 12, 33);
console.log(date); // mikä päivämäärä tulee?
Määritä, mihin päivämäärään JavaScript muuntaa seuraavan ajanhetken:
let date = new Date(2018, 33, 33);
console.log(date); // mikä päivämäärä tulee?
Määritä, mihin päivämäärään JavaScript muuntaa seuraavan ajanhetken:
let date = new Date(2018, 5, 0);
console.log(date); // mikä päivämäärä tulee?
Määritä, mihin päivämäärään JavaScript muuntaa seuraavan ajanhetken:
let date = new Date(2018, 0, 0);
console.log(date); // mikä päivämäärä tulee?
Määritä, mihin päivämäärään JavaScript muuntaa seuraavan ajanhetken:
let date = new Date(2018, -12, -33);
console.log(date); // mikä päivämäärä tulee?
Määritä, mihin päivämäärään JavaScript muuntaa seuraavan ajanhetken:
let date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // mikä päivämäärä tulee?
Määritä, mihin päivämäärään JavaScript muuntaa seuraavan ajanhetken:
let date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // mikä päivämäärä tulee?
Määritä, mihin päivämäärään JavaScript muuntaa seuraavan ajanhetken:
let date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // mikä päivämäärä tulee?