Automatska korekcija datuma u JavaScript-u
JavaScript ima vrlo zanimljivu i korisnu
karakteristiku: ako je prilikom kreiranja objekta Date
naveden nevalidan trenutak vremena -
on će automatski biti preračunat u validan.
Pogledajmo na primeru.
Kao što znate, datum 35 januara ne postoji.
Maksimalno mogući dan u januaru je 31.
To znači da naš datum 35 januara
ima 4 dodatna dana. JavaScript će u takvoj
situaciji prosto dodati ta dodatna 4
dana narednom mesecu:
let datum = new Date(2018, 0, 35);
console.log(datum); // dobiće se 4. februar
Moguće je navesti ne samo dodatne dane, već
i mesece. Pritom treba imati na umu da meseci
počinju od nule, što znači da poslednji validan
mesec je 11-ti. Ako navedemo 12-ti
mesec, dobićemo januar naredne godine:
let datum = new Date(2018, 12, 1); // navodimo 12. mesec
console.log(datum); // dobiće se 1. januar 2019. godine
Opisana korekcija radi i u manjem
smeru. Kao što znate, najmanji mogući
dan u mesecu je dan sa brojem 1.
Stoga, ako navedemo dan sa brojem 0,
dobićemo poslednji dan prethodnog meseca:
let datum = new Date(2018, 1, 0); // navodimo nulti dan
console.log(datum); // dobiće se 31. januar
Takođe je moguće navesti negativne vrednosti
dana i meseci. Pritom treba zapamtiti da
najmanji dan ima broj 1, a
najmanji mesec - broj 0. Ovo znači
da minus prvi dan pada u 2
dan od kraja prethodnog meseca, a minus
prvi mesec pada prosto u poslednji
mesec prethodne godine:
let datum = new Date(2018, 1, -1); // navodimo -1 dan
console.log(datum); // dobiće se 30. januar
let datum = new Date(2018, -1, 1); // navodimo -1 mesec
console.log(datum); // dobiće se 1. decembar 2017. godine
Sve gore rečeno analogno važi za sate, minute i sekunde:
let datum = new Date(2018, 0, 1, 24, 0, 0); // navodimo 24. sat
console.log(datum); // dobiće se 2. januar, 0 sati
let datum = new Date(2018, 0, 1, 25, 0, 0); // navodimo 25. sat
console.log(datum); // dobiće se 2. januar, 1 sat
Odredite u koji datum će JavaScript pretvoriti naredni trenutak vremena:
let datum = new Date(2018, 1, 35);
console.log(datum); // koji datum će biti?
Odredite u koji datum će JavaScript pretvoriti naredni trenutak vremena:
let datum = new Date(2018, 15, 1);
console.log(datum); // koji datum će biti?
Odredite u koji datum će JavaScript pretvoriti naredni trenutak vremena:
let datum = new Date(2018, 3, 31);
console.log(datum); // koji datum će biti?
Odredite u koji datum će JavaScript pretvoriti naredni trenutak vremena:
let datum = new Date(2018, 1, 31);
console.log(datum); // koji datum će biti?
Odredite u koji datum će JavaScript pretvoriti naredni trenutak vremena:
let datum = new Date(2018, 12, 33);
console.log(datum); // koji datum će biti?
Odredite u koji datum će JavaScript pretvoriti naredni trenutak vremena:
let datum = new Date(2018, 33, 33);
console.log(datum); // koji datum će biti?
Odredite u koji datum će JavaScript pretvoriti naredni trenutak vremena:
let datum = new Date(2018, 5, 0);
console.log(datum); // koji datum će biti?
Odredite u koji datum će JavaScript pretvoriti naredni trenutak vremena:
let datum = new Date(2018, 0, 0);
console.log(datum); // koji datum će biti?
Odredite u koji datum će JavaScript pretvoriti naredni trenutak vremena:
let datum = new Date(2018, -12, -33);
console.log(datum); // koji datum će biti?
Odredite u koji datum će JavaScript pretvoriti naredni trenutak vremena:
let datum = new Date(2018, 0, 1, 23, 0, 60);
console.log(datum); // koji datum će biti?
Odredite u koji datum će JavaScript pretvoriti naredni trenutak vremena:
let datum = new Date(2018, 0, 1, 23, 60, 0);
console.log(datum); // koji datum će biti?
Odredite u koji datum će JavaScript pretvoriti naredni trenutak vremena:
let datum = new Date(2018, 0, 1, 100, 100, 100);
console.log(datum); // koji datum će biti?