Аўтаматычная карэктоўка дат у JavaScript
JavaScript мае вельмі цікавую і карысную
асаблівасць: калі пры стварэнні аб'екта Date
быў пазначаны некарэктны момант часу -
ён аўтаматычна будзе пералічаны ў карэктны.
Давайце паглядзім на прыкладзе.
Як вы ведаеце, даты 35
студзеня не існуе.
Максімальна магчымы дзень студзеня - 31
.
Атрымліваецца, што наша дата 35
студзеня
мае 4
лішніх дня. JavaScript у такім
выпадку проста дадасць гэтыя лішнія 4
дня да наступнага месяца:
let date = new Date(2018, 0, 35);
console.log(date); // атрымаецца 4 лютага
Можна пазначаць не толькі лішнія дні, але
і месяцы. Пры гэтым варта памятаць, што месяцы
пачынаюцца з нуля, а значыць апошні карэктны
месяц - 11
-ты. Калі пазначыць 12
-ты
месяц, то атрымаецца студзень наступнага года:
let date = new Date(2018, 12, 1); // пазначаем 12-ты месяц
console.log(date); // атрымаецца 1 студзеня 2019 года
Апісаная карэктоўка працуе і ў меншую
боку. Як вы ведаеце, самым мінімальным
днём месяца з'яўляецца дзень з нумарам 1
.
Таму, калі пазначыць дзень з нумарам 0
,
то атрымаецца апошні дзень папярэдняга месяца:
let date = new Date(2018, 1, 0); // пазначаем нулявы дзень
console.log(date); // атрымаецца 31 студзеня
Можна таксама пазначаць адмоўныя значэнні
днёў і месяцаў. Пры гэтым трэба памятаць, што
мінімальны дзень мае нумар 1
, а
мінімальны месяц - нумар 0
. Гэта значыць,
што мінус першы дзень трапляе ў 2
дзень з канца папярэдняга месяца, а мінус
першы месяц трапляе проста ў апошні
месяц папярэдняга года:
let date = new Date(2018, 1, -1); // пазначаем -1 дзень
console.log(date); // атрымаецца 30 студзеня
let date = new Date(2018, -1, 1); // пазначаем -1 месяц
console.log(date); // атрымаецца 1 снежня 2017 года
Усё сказанае вышэй аналагічна працуе з гадзінамі, хвілінамі і секундамі:
let date = new Date(2018, 0, 1, 24, 0, 0); // пазначаем 24-тую гадзіну
console.log(date); // атрымаецца 2 студзеня, 0 гадзін
let date = new Date(2018, 0, 1, 25, 0, 0); // пазначаем 25-тую гадзіну
console.log(date); // атрымаецца 2 студзеня, 1 гадзіна
Вызначыце, у якую дату JavaScript пераўтворыць наступны момант часу:
let date = new Date(2018, 1, 35);
console.log(date); // якая дата будзе?
Вызначыце, у якую дату JavaScript пераўтворыць наступны момант часу:
let date = new Date(2018, 15, 1);
console.log(date); // якая дата будзе?
Вызначыце, у якую дату JavaScript пераўтворыць наступны момант часу:
let date = new Date(2018, 3, 31);
console.log(date); // якая дата будзе?
Вызначыце, у якую дату JavaScript пераўтворыць наступны момант часу:
let date = new Date(2018, 1, 31);
console.log(date); // якая дата будзе?
Вызначыце, у якую дату JavaScript пераўтворыць наступны момант часу:
let date = new Date(2018, 12, 33);
console.log(date); // якая дата будзе?
Вызначыце, у якую дату JavaScript пераўтворыць наступны момант часу:
let date = new Date(2018, 33, 33);
console.log(date); // якая дата будзе?
Вызначыце, у якую дату JavaScript пераўтворыць наступны момант часу:
let date = new Date(2018, 5, 0);
console.log(date); // якая дата будзе?
Вызначыце, у якую дату JavaScript пераўтворыць наступны момант часу:
let date = new Date(2018, 0, 0);
console.log(date); // якая дата будзе?
Вызначыце, у якую дату JavaScript пераўтворыць наступны момант часу:
let date = new Date(2018, -12, -33);
console.log(date); // якая дата будзе?
Вызначыце, у якую дату JavaScript пераўтворыць наступны момант часу:
let date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // якая дата будзе?
Вызначыце, у якую дату JavaScript пераўтворыць наступны момант часу:
let date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // якая дата будзе?
Вызначыце, у якую дату JavaScript пераўтворыць наступны момант часу:
let date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // якая дата будзе?