Automatyczna korekta dat w JavaScript
JavaScript ma bardzo interesującą i przydatną
cechę: jeśli podczas tworzenia obiektu Date
została podana nieprawidłowa chwila czasu -
zostanie ona automatycznie przeliczona na prawidłową.
Spójrzmy na przykład.
Jak wiesz, data 35 stycznia nie istnieje.
Maksymalny możliwy dzień stycznia to 31.
Okazuje się, że nasza data 35 stycznia
ma 4 dodatkowe dni. JavaScript w takim
przypadku po prostu doda te dodatkowe 4
dni do następnego miesiąca:
let date = new Date(2018, 0, 35);
console.log(date); // otrzymamy 4 lutego
Można podawać nie tylko dodatkowe dni, ale
i miesiące. Należy przy tym pamiętać, że miesiące
zaczynają się od zera, a więc ostatni prawidłowy
miesiąc to 11-ty. Jeśli podamy 12-ty
miesiąc, otrzymamy styczeń następnego roku:
let date = new Date(2018, 12, 1); // podajemy 12-ty miesiąc
console.log(date); // otrzymamy 1 stycznia 2019 roku
Opisana korekta działa również w mniejszą
stronę. Jak wiesz, najniższym
dniem miesiąca jest dzień o numerze 1.
Dlatego, jeśli podamy dzień o numerze 0,
otrzymamy ostatni dzień poprzedniego miesiąca:
let date = new Date(2018, 1, 0); // podajemy zerowy dzień
console.log(date); // otrzymamy 31 stycznia
Można również podawać ujemne wartości
dni i miesięcy. Należy przy tym pamiętać, że
najniższy dzień ma numer 1, a
najniższy miesiąc - numer 0. To znaczy,
że minus pierwszy dzień trafi w 2
dzień od końca poprzedniego miesiąca, a minus
pierwszy miesiąc trafi po prostu w ostatni
miesiąc poprzedniego roku:
let date = new Date(2018, 1, -1); // podajemy -1 dzień
console.log(date); // otrzymamy 30 stycznia
let date = new Date(2018, -1, 1); // podajemy -1 miesiąc
console.log(date); // otrzymamy 1 grudnia 2017 roku
Wszystko powyższe działa analogicznie z godzinami, minutami i sekundami:
let date = new Date(2018, 0, 1, 24, 0, 0); // podajemy 24-tą godzinę
console.log(date); // otrzymamy 2 stycznia, 0 godzin
let date = new Date(2018, 0, 1, 25, 0, 0); // podajemy 25-tą godzinę
console.log(date); // otrzymamy 2 stycznia, 1 godzina
Określ, na jaką datę JavaScript przekształci następującą chwilę czasu:
let date = new Date(2018, 1, 35);
console.log(date); // jaka będzie data?
Określ, na jaką datę JavaScript przekształci następującą chwilę czasu:
let date = new Date(2018, 15, 1);
console.log(date); // jaka będzie data?
Określ, na jaką datę JavaScript przekształci następującą chwilę czasu:
let date = new Date(2018, 3, 31);
console.log(date); // jaka będzie data?
Określ, na jaką datę JavaScript przekształci następującą chwilę czasu:
let date = new Date(2018, 1, 31);
console.log(date); // jaka będzie data?
Określ, na jaką datę JavaScript przekształci następującą chwilę czasu:
let date = new Date(2018, 12, 33);
console.log(date); // jaka będzie data?
Określ, na jaką datę JavaScript przekształci następującą chwilę czasu:
let date = new Date(2018, 33, 33);
console.log(date); // jaka będzie data?
Określ, na jaką datę JavaScript przekształci następującą chwilę czasu:
let date = new Date(2018, 5, 0);
console.log(date); // jaka będzie data?
Określ, na jaką datę JavaScript przekształci następującą chwilę czasu:
let date = new Date(2018, 0, 0);
console.log(date); // jaka będzie data?
Określ, na jaką datę JavaScript przekształci następującą chwilę czasu:
let date = new Date(2018, -12, -33);
console.log(date); // jaka będzie data?
Określ, na jaką datę JavaScript przekształci następującą chwilę czasu:
let date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // jaka będzie data?
Określ, na jaką datę JavaScript przekształci następującą chwilę czasu:
let date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // jaka będzie data?
Określ, na jaką datę JavaScript przekształci następującą chwilę czasu:
let date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // jaka będzie data?