JavaScriptда даталарни автомат тарзда тўғрилаш

JavaScriptда juda кизиқарли ва фойдали хусусият бор: агар 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); // қайси сана булади?