JavaScript-də Tarixlərin Avtomatik Korreksiyası

JavaScript-in çox maraqlı və faydalı bir xüsusiyyəti var: əgər Date obyekti yaradılarkən səhv bir vaxt müəyyən edilirsə, o avtomatik olaraq düzgün vaxta çevrilir. Gəlin bir nümunəyə baxaq.

Bildiyiniz kimi, yanvarın 35-i kimi bir tarix yoxdur. Yanvar ayının maksimum mümkün olan günü 31-dir. Bu o deməkdir ki, bizim 35 yanvar tariximiz 4 əlavə günə malikdir. Belə bir halda JavaScript bu əlavə 4 günü sadəcə növbəti aya əlavə edəcək:

javascriptlet date = new Date(2018, 0, 35);
console.log(date); // 4 fevral alınacaq

Yalnız əlavə günləri deyil, həm də ayları göstərmək olar. Bunu edərkən yadda saxlayın ki, aylar sıfırdan başlayır, bu o deməkdir ki, sonuncu düzgün ay 11-dir. Əgər 12-ci ayı göstərsəniz, növbəti ilin yanvarı alınacaq:

javascriptlet date = new Date(2018, 12, 1); // 12-ci ayı göstəririk
console.log(date); // 1 yanvar 2019-cu il alınacaq

Təsvir edilən korreksiya kiçik istiqamətdə də işləyir. Bildiyiniz kimi, ayın ən kiçik günü 1 nömrəli gündür. Ona görə də, əgər 0 nömrəli günü göstərsəniz, əvvəlki ayın son günü alınacaq:

javascriptlet date = new Date(2018, 1, 0); // sıfırıncı günü göstəririk
console.log(date); // 31 yanvar alınacaq

Həmçinin mənfi gün və ay dəyərlərini də göstərmək olar. Bunu edərkən yadda saxlayın ki, ən kiçik gün 1 nömrəsinə, ən kiçik ay isə 0 nömrəsinə malikdir. Bu o deməkdir ki, mənfi birinci gün əvvəlki ayın sondan 2-ci gününə, mənfi birinci ay isə sadəcə əvvəlki ilin son ayına düşəcək:

javascriptlet date = new Date(2018, 1, -1); // -1 günü göstəririk
console.log(date); // 30 yanvar alınacaq
javascriptlet date = new Date(2018, -1, 1); // -1 ayı göstəririk
console.log(date); // 1 dekabr 2017-ci il alınacaq

Yuxarıda deyilənlərin hamısı saatlar, dəqiqələr və saniyələrlə də eyni şəkildə işləyir:

javascriptlet date = new Date(2018, 0, 1, 24, 0, 0); // 24-cü saatı göstəririk
console.log(date); // 2 yanvar, 0 saat alınacaq
javascriptlet date = new Date(2018, 0, 1, 25, 0, 0); // 25-ci saatı göstəririk
console.log(date); // 2 yanvar, 1 saat alınacaq
Задание 1

Müəyyən edin ki, JavaScript aşağıdakı vaxt anını hansı tarixə çevirəcək:

javascriptlet date = new Date(2018, 1, 35);
console.log(date); // hansı tarix alınacaq?
Задание 2

Müəyyən edin ki, JavaScript aşağıdakı vaxt anını hansı tarixə çevirəcək:

javascriptlet date = new Date(2018, 15, 1);
console.log(date); // hansı tarix alınacaq?
Задание 3

Müəyyən edin ki, JavaScript aşağıdakı vaxt anını hansı tarixə çevirəcək:

javascriptlet date = new Date(2018, 3, 31);
console.log(date); // hansı tarix alınacaq?
Задание 4

Müəyyən edin ki, JavaScript aşağıdakı vaxt anını hansı tarixə çevirəcək:

javascriptlet date = new Date(2018, 1, 31);
console.log(date); // hansı tarix alınacaq?
Задание 5

Müəyyən edin ki, JavaScript aşağıdakı vaxt anını hansı tarixə çevirəcək:

javascriptlet date = new Date(2018, 12, 33);
console.log(date); // hansı tarix alınacaq?
Задание 6

Müəyyən edin ki, JavaScript aşağıdakı vaxt anını hansı tarixə çevirəcək:

javascriptlet date = new Date(2018, 33, 33);
console.log(date); // hansı tarix alınacaq?
Задание 7

Müəyyən edin ki, JavaScript aşağıdakı vaxt anını hansı tarixə çevirəcək:

javascriptlet date = new Date(2018, 5, 0);
console.log(date); // hansı tarix alınacaq?
Задание 8

Müəyyən edin ki, JavaScript aşağıdakı vaxt anını hansı tarixə çevirəcək:

javascriptlet date = new Date(2018, 0, 0);
console.log(date); // hansı tarix alınacaq?
Задание 9

Müəyyən edin ki, JavaScript aşağıdakı vaxt anını hansı tarixə çevirəcək:

javascriptlet date = new Date(2018, -12, -33);
console.log(date); // hansı tarix alınacaq?
Задание 10

Müəyyən edin ki, JavaScript aşağıdakı vaxt anını hansı tarixə çevirəcək:

javascriptlet date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // hansı tarix alınacaq?
Задание 11

Müəyyən edin ki, JavaScript aşağıdakı vaxt anını hansı tarixə çevirəcək:

javascriptlet date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // hansı tarix alınacaq?
Задание 12

Müəyyən edin ki, JavaScript aşağıdakı vaxt anını hansı tarixə çevirəcək:

javascriptlet date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // hansı tarix alınacaq?