Automatická korekce dat v JavaScriptu
JavaScript má velmi zajímavou a užitečnou
vlastnost: pokud je při vytváření objektu Date
zadán neplatný časový okamžik -
automaticky se přepočte na platný.
Podívejme se na příklad.
Jak víte, datum 35 ledna neexistuje.
Maximální možný den ledna je 31.
To znamená, že naše datum 35 ledna
má 4 dny navíc. JavaScript v takovém
případě jednoduše přidá těchto 4
dní navíc k následujícímu měsíci:
let date = new Date(2018, 0, 35);
console.log(date); // výsledek bude 4. února
Lze zadat nejen přebytečné dny, ale
i měsíce. Přitom je třeba mít na paměti, že měsíce
začínají od nuly, a proto poslední platný
měsíc je 11-tý. Pokud zadáte 12-tý
měsíc, výsledkem bude leden následujícího roku:
let date = new Date(2018, 12, 1); // zadáme 12-tý měsíc
console.log(date); // výsledek bude 1. ledna 2019
Popsaná korekce funguje i směrem dolů.
Jak víte, nejmenším možným
dnem měsíce je den s číslem 1.
Proto, pokud zadáte den s číslem 0,
výsledkem bude poslední den předchozího měsíce:
let date = new Date(2018, 1, 0); // zadáme nultý den
console.log(date); // výsledek bude 31. ledna
Lze také zadávat záporné hodnoty
dní a měsíců. Přitom je třeba pamatovat, že
nejmenší den má číslo 1, a
nejmenší měsíc - číslo 0. To znamená,
že mínus první den spadá na 2
den od konce předchozího měsíce, a mínus
první měsíc spadá přímo na poslední
měsíc předchozího roku:
let date = new Date(2018, 1, -1); // zadáme -1 den
console.log(date); // výsledek bude 30. ledna
let date = new Date(2018, -1, 1); // zadáme -1 měsíc
console.log(date); // výsledek bude 1. prosince 2017
Vše výše uvedené analogicky funguje s hodinami, minutami a sekundami:
let date = new Date(2018, 0, 1, 24, 0, 0); // zadáme 24-tou hodinu
console.log(date); // výsledek bude 2. ledna, 0 hodin
let date = new Date(2018, 0, 1, 25, 0, 0); // zadáme 25-tou hodinu
console.log(date); // výsledek bude 2. ledna, 1 hodina
Určete, na jaké datum JavaScript převede následující časový okamžik:
let date = new Date(2018, 1, 35);
console.log(date); // jaké bude datum?
Určete, na jaké datum JavaScript převede následující časový okamžik:
let date = new Date(2018, 15, 1);
console.log(date); // jaké bude datum?
Určete, na jaké datum JavaScript převede následující časový okamžik:
let date = new Date(2018, 3, 31);
console.log(date); // jaké bude datum?
Určete, na jaké datum JavaScript převede následující časový okamžik:
let date = new Date(2018, 1, 31);
console.log(date); // jaké bude datum?
Určete, na jaké datum JavaScript převede následující časový okamžik:
let date = new Date(2018, 12, 33);
console.log(date); // jaké bude datum?
Určete, na jaké datum JavaScript převede následující časový okamžik:
let date = new Date(2018, 33, 33);
console.log(date); // jaké bude datum?
Určete, na jaké datum JavaScript převede následující časový okamžik:
let date = new Date(2018, 5, 0);
console.log(date); // jaké bude datum?
Určete, na jaké datum JavaScript převede následující časový okamžik:
let date = new Date(2018, 0, 0);
console.log(date); // jaké bude datum?
Určete, na jaké datum JavaScript převede následující časový okamžik:
let date = new Date(2018, -12, -33);
console.log(date); // jaké bude datum?
Určete, na jaké datum JavaScript převede následující časový okamžik:
let date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // jaké bude datum?
Určete, na jaké datum JavaScript převede následující časový okamžik:
let date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // jaké bude datum?
Určete, na jaké datum JavaScript převede následující časový okamžik:
let date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // jaké bude datum?