Samodejna korekcija datumov v JavaScriptu
JavaScript ima zelo zanimivo in uporabno
lastnost: če je pri ustvarjanju objekta Date
določen neveljaven trenutek časa -
bo samodejno preračunan v veljavnega.
Poglejmo si primer.
Kot veste, datum 35 januarja ne obstaja.
Maksimalni možni dan januarja je 31.
Izkazalo se je, da ima naš datum 35 januarja
4 odvečne dni. JavaScript v takem
primeru preprosto doda teh odvečnih 4
dni naslednjemu mesecu:
let date = new Date(2018, 0, 35);
console.log(date); // rezultat bo 4. februar
Lahko določite ne le odvečne dni, ampak
tudi mesece. Pri tem je treba upoštevati, da se meseci
začenjajo z ničlo, kar pomeni, da je zadnji veljaven
mesec 11-ti. Če določite 12-ti
mesec, bo rezultat januar naslednjega leta:
let date = new Date(2018, 12, 1); // določimo 12. mesec
console.log(date); // rezultat bo 1. januar 2019
Opisana korekcija deluje tudi v manjšo
smer. Kot veste, je najmanjši
dan v mesecu dan s številko 1.
Zato, če določite dan s številko 0,
boste dobili zadnji dan prejšnjega meseca:
let date = new Date(2018, 1, 0); // določimo ničti dan
console.log(date); // rezultat bo 31. januar
Lahko določite tudi negativne vrednosti
dnevov in mesecev. Pri tem je treba upoštevati, da
ima najmanjši dan številko 1, a
najmanjši mesec - številko 0. To pomeni,
da minus prvi dan pade v 2
dan od konca prejšnjega meseca, minus
prvi mesec pa preprosto pade v zadnji
mesec prejšnjega leta:
let date = new Date(2018, 1, -1); // določimo -1 dan
console.log(date); // rezultat bo 30. januar
let date = new Date(2018, -1, 1); // določimo -1 mesec
console.log(date); // rezultat bo 1. december 2017
Vse zgoraj navedeno deluje podobno pri urah, minutah in sekundah:
let date = new Date(2018, 0, 1, 24, 0, 0); // določimo 24. uro
console.log(date); // rezultat bo 2. januar, 0 ur
let date = new Date(2018, 0, 1, 25, 0, 0); // določimo 25. uro
console.log(date); // rezultat bo 2. januar, 1 ura
Določite, v kateri datum bo JavaScript spremenil naslednji trenutek časa:
let date = new Date(2018, 1, 35);
console.log(date); // kateri datum bo?
Določite, v kateri datum bo JavaScript spremenil naslednji trenutek časa:
let date = new Date(2018, 15, 1);
console.log(date); // kateri datum bo?
Določite, v kateri datum bo JavaScript spremenil naslednji trenutek časa:
let date = new Date(2018, 3, 31);
console.log(date); // kateri datum bo?
Določite, v kateri datum bo JavaScript spremenil naslednji trenutek časa:
let date = new Date(2018, 1, 31);
console.log(date); // kateri datum bo?
Določite, v kateri datum bo JavaScript spremenil naslednji trenutek časa:
let date = new Date(2018, 12, 33);
console.log(date); // kateri datum bo?
Določite, v kateri datum bo JavaScript spremenil naslednji trenutek časa:
let date = new Date(2018, 33, 33);
console.log(date); // kateri datum bo?
Določite, v kateri datum bo JavaScript spremenil naslednji trenutek časa:
let date = new Date(2018, 5, 0);
console.log(date); // kateri datum bo?
Določite, v kateri datum bo JavaScript spremenil naslednji trenutek časa:
let date = new Date(2018, 0, 0);
console.log(date); // kateri datum bo?
Določite, v kateri datum bo JavaScript spremenil naslednji trenutek časa:
let date = new Date(2018, -12, -33);
console.log(date); // kateri datum bo?
Določite, v kateri datum bo JavaScript spremenil naslednji trenutek časa:
let date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // kateri datum bo?
Določite, v kateri datum bo JavaScript spremenil naslednji trenutek časa:
let date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // kateri datum bo?
Določite, v kateri datum bo JavaScript spremenil naslednji trenutek časa:
let date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // kateri datum bo?