Automatická korekcia dátumov v JavaScripte
JavaScript má veľmi zaujímavú a užitočnú
vlastnosť: ak pri vytvorení objektu Date
bol zadaný nekorektný časový okamih -
automaticky sa prepočíta na korektný.
Pozrime sa na príklad.
Ako viete, dátum 35 januára neexistuje.
Maximálne možný deň januára je 31.
To znamená, že náš dátum 35 januára
má 4 nadbytočné dni. JavaScript v takom
prípade jednoducho pripočíta tieto nadbytočné 4
dni k nasledujúcemu mesiacu:
let date = new Date(2018, 0, 35);
console.log(date); // výsledok bude 4. február
Je možné uvádzať nielen nadbytočné dni, ale
aj mesiace. Pri tom treba pamätať, že mesiace
začínajú od nuly, a preto posledný korektný
mesiac je 11-tý. Ak uvedieme 12-tý
mesiac, dostaneme január nasledujúceho roku:
let date = new Date(2018, 12, 1); // uvádzame 12-tý mesiac
console.log(date); // výsledok bude 1. január 2019
Opísaná korekcia funguje aj na menšiu
stranu. Ako viete, najmenším možným
dňom mesiaca je deň s číslom 1.
Preto, ak uvedieme deň s číslom 0,
dostaneme posledný deň predchádzajúceho mesiaca:
let date = new Date(2018, 1, 0); // uvádzame nulový deň
console.log(date); // výsledok bude 31. január
Je možné uvádzať aj záporné hodnoty
dní a mesiacov. Pri tom treba pamätať, že
minimálny deň má číslo 1, a
minimálny mesiac - číslo 0. To znamená,
že mínus prvý deň pripadne na 2
deň od konca predchádzajúceho mesiaca, a mínus
prvý mesiac pripadne jednoducho na posledný
mesiac predchádzajúceho roku:
let date = new Date(2018, 1, -1); // uvádzame -1 deň
console.log(date); // výsledok bude 30. január
let date = new Date(2018, -1, 1); // uvádzame -1 mesiac
console.log(date); // výsledok bude 1. december 2017
Všetko uvedené vyššie analogicky funguje s hodinami, minútami a sekundami:
let date = new Date(2018, 0, 1, 24, 0, 0); // uvádzame 24-tu hodinu
console.log(date); // výsledok bude 2. január, 0 hodín
let date = new Date(2018, 0, 1, 25, 0, 0); // uvádzame 25-tu hodinu
console.log(date); // výsledok bude 2. január, 1 hodina
Určite, na aký dátum JavaScript pretransformuje nasledujúci časový okamih:
let date = new Date(2018, 1, 35);
console.log(date); // aký dátum bude?
Určite, na aký dátum JavaScript pretransformuje nasledujúci časový okamih:
let date = new Date(2018, 15, 1);
console.log(date); // aký dátum bude?
Určite, na aký dátum JavaScript pretransformuje nasledujúci časový okamih:
let date = new Date(2018, 3, 31);
console.log(date); // aký dátum bude?
Určite, na aký dátum JavaScript pretransformuje nasledujúci časový okamih:
let date = new Date(2018, 1, 31);
console.log(date); // aký dátum bude?
Určite, na aký dátum JavaScript pretransformuje nasledujúci časový okamih:
let date = new Date(2018, 12, 33);
console.log(date); // aký dátum bude?
Určite, na aký dátum JavaScript pretransformuje nasledujúci časový okamih:
let date = new Date(2018, 33, 33);
console.log(date); // aký dátum bude?
Určite, na aký dátum JavaScript pretransformuje nasledujúci časový okamih:
let date = new Date(2018, 5, 0);
console.log(date); // aký dátum bude?
Určite, na aký dátum JavaScript pretransformuje nasledujúci časový okamih:
let date = new Date(2018, 0, 0);
console.log(date); // aký dátum bude?
Určite, na aký dátum JavaScript pretransformuje nasledujúci časový okamih:
let date = new Date(2018, -12, -33);
console.log(date); // aký dátum bude?
Určite, na aký dátum JavaScript pretransformuje nasledujúci časový okamih:
let date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // aký dátum bude?
Určite, na aký dátum JavaScript pretransformuje nasledujúci časový okamih:
let date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // aký dátum bude?
Určite, na aký dátum JavaScript pretransformuje nasledujúci časový okamih:
let date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // aký dátum bude?