JavaScript-ում ամսաթվերի ավտոմատ ուղղում

JavaScript-ն ունի շատ հետաքրքիր և օգտակար հատկանիշ. եթե Date օբյեկտը ստեղծելիս նշված է անթույլատրելի ժամանակի պահ - այն ավտոմատ կերպով կվերահաշվարկվի որպես թույլատրելի: Եկեք նայենք օրինակով:

Ինչպես գիտեք, հունվարի 35-ը գոյություն չունի: Հունվար ամսվա առավելագույն հնարավոր օրը 31-ն է: Ստացվում է, որ մեր հունվարի 35-ը ունի 4 ավելորդ օր: JavaScript այդպիսի դեպքում պարզապես կավելացնի այդ ավելորդ 4 օրը հաջորդ ամսվան:

javascriptlet date = new Date(2018, 0, 35);
console.log(date); // կստացվի փետրվարի 4

Կարելի է նշել ոչ միայն ավելորդ օրեր, այլ նաև ամիսներ: Այդ դեպքում պետք է հիշել, որ ամիսները սկսվում են զրոյից, ինչը նշանակում է, որ վերջին թույլատրելի ամիսը 11-երորդն է: Եթե նշենք 12-երորդ ամիսը, ապա կստացվի հաջորդ տարվա հունվար:

javascriptlet date = new Date(2018, 12, 1); // նշում ենք 12-երորդ ամիս
console.log(date); // կստացվի 2019 թվականի հունվարի 1

Նկարագրված ուղղումը աշխատում է նաև դեպի փոքր կողմը: Ինչպես գիտեք, ամսվա ամենափոքր օրը 1 համարով օրն է: Հետևաբար, եթե նշենք 0 համարով օր, ապա կստացվի նախորդ ամսվա վերջին օրը:

javascriptlet date = new Date(2018, 1, 0); // նշում ենք զրոյական օր
console.log(date); // կստացվի հունվարի 31

Կարելի է նաև նշել բացասական արժեքներ օրերի և ամիսների համար: Այդ դեպքում պետք է հիշել, որ ամենափոքր օրը ունի 1 համար, իսկ ամենափոքր ամիսը՝ 0 համար: Սա նշանակում է, որ մինուս առաջին օրը կհանդիպի նախորդ ամսվա վերջից 2-րդ օրը, իսկ մինուս առաջին ամիսը կհանդիպի պարզապես նախորդ տարվա վերջին ամսվան:

javascriptlet date = new Date(2018, 1, -1); // նշում ենք -1 օր
console.log(date); // կստացվի հունվարի 30
javascriptlet date = new Date(2018, -1, 1); // նշում ենք -1 ամիս
console.log(date); // կստացվի 2017 թվականի դեկտեմբերի 1

Վերոնշյալը նմանապես աշխատում է ժամերի, րոպեների և վայրկյանների հետ:

javascriptlet date = new Date(2018, 0, 1, 24, 0, 0); // նշում ենք 24-երորդ ժամ
console.log(date); // կստացվի հունվարի 2, 0 ժամ
javascriptlet date = new Date(2018, 0, 1, 25, 0, 0); // նշում ենք 25-երորդ ժամ
console.log(date); // կստացվի հունվարի 2, 1 ժամ
Задание 1

Որոշեք, թե ինչ ամսաթվի JavaScript-ը կվերափոխի հետևյալ ժամանակի պահը:

javascriptlet date = new Date(2018, 1, 35);
console.log(date); // ինչ ամսաթիվ կլինի?
Задание 2

Որոշեք, թե ինչ ամսաթվի JavaScript-ը կվերափոխի հետևյալ ժամանակի պահը:

javascriptlet date = new Date(2018, 15, 1);
console.log(date); // ինչ ամսաթիվ կլինի?
Задание 3

Որոշեք, թե ինչ ամսաթվի JavaScript-ը կվերափոխի հետևյալ ժամանակի պահը:

javascriptlet date = new Date(2018, 3, 31);
console.log(date); // ինչ ամսաթիվ կլինի?
Задание 4

Որոշեք, թե ինչ ամսաթվի JavaScript-ը կվերափոխի հետևյալ ժամանակի պահը:

javascriptlet date = new Date(2018, 1, 31);
console.log(date); // ինչ ամսաթիվ կլինի?
Задание 5

Որոշեք, թե ինչ ամսաթվի JavaScript-ը կվերափոխի հետևյալ ժամանակի պահը:

javascriptlet date = new Date(2018, 12, 33);
console.log(date); // ինչ ամսաթիվ կլինի?
Задание 6

Որոշեք, թե ինչ ամսաթվի JavaScript-ը կվերափոխի հետևյալ ժամանակի պահը:

javascriptlet date = new Date(2018, 33, 33);
console.log(date); // ինչ ամսաթիվ կլինի?
Задание 7

Որոշեք, թե ինչ ամսաթվի JavaScript-ը կվերափոխի հետևյալ ժամանակի պահը:

javascriptlet date = new Date(2018, 5, 0);
console.log(date); // ինչ ամսաթիվ կլինի?
Задание 8

Որոշեք, թե ինչ ամսաթվի JavaScript-ը կվերափոխի հետևյալ ժամանակի պահը:

javascriptlet date = new Date(2018, 0, 0);
console.log(date); // ինչ ամսաթիվ կլինի?
Задание 9

Որոշեք, թե ինչ ամսաթվի JavaScript-ը կվերափոխի հետևյալ ժամանակի պահը:

javascriptlet date = new Date(2018, -12, -33);
console.log(date); // ինչ ամսաթիվ կլինի?
Задание 10

Որոշեք, թե ինչ ամսաթվի JavaScript-ը կվերափոխի հետևյալ ժամանակի պահը:

javascriptlet date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // ինչ ամսաթիվ կլինի?
Задание 11

Որոշեք, թե ինչ ամսաթվի JavaScript-ը կվերափոխի հետևյալ ժամանակի պահը:

javascriptlet date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // ինչ ամսաթիվ կլինի?
Задание 12

Որոշեք, թե ինչ ամսաթվի JavaScript-ը կվերափոխի հետևյալ ժամանակի պահը:

javascriptlet date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // ինչ ամսաթիվ կլինի?