JavaScriptda sanalarni avtomatik tuzatish

JavaScript juda qiziqarli va foydali xususiyatga ega: agar Date ob'ekti yaratilganda noto'g'ri vaqt nuqtasi ko'rsatilgan bo'lsa - u avtomatik ravishda to'g'ri vaqtga qayta hisoblanadi. Keling, buni misol bilan ko'rib chiqaylik.

Ma'lumki, yanvarning 35-kuni mavjud emas. Yanvar oyining eng katta mumkin bo'lgan kuni - 31. Demak, bizning 35 yanvar sanamiz 4 ortiqcha kunni tashkil qiladi. JavaScript bunday holatda shunchaki ushbu ortiqcha 4 kunni keyingi oyga qo'shib qo'yadi:

javascriptlet date = new Date(2018, 0, 35);
console.log(date); // natijada 4 fevral bo'ladi

Nafaqat ortiqcha kunlarni, balki oylarni ham ko'rsatish mumkin. Bunda shuni esda tutish kerakki, oylar noldan boshlanadi, demak oxirgi to'g'ri oy - 11-chi oy. Agar 12-chi oyni ko'rsatilsa, keyingi yilning yanvar oyi hosil bo'ladi:

javascriptlet date = new Date(2018, 12, 1); // 12-chi oyni ko'rsatamiz
console.log(date); // natijada 2019 yil 1 yanvar bo'ladi

Tasvirlangan tuzatish kichik tomonga ham ishlaydi. Ma'lumki, oyning eng minimal kuni 1-raqamli kundir. Shuning uchun, agar 0-raqamli kun ko'rsatilsa, oldingi oyning oxirgi kuni hosil bo'ladi:

javascriptlet date = new Date(2018, 1, 0); // nolchi kuni ko'rsatamiz
console.log(date); // natijada 31 yanvar bo'ladi

Manfiy qiymatli kunlar va oylarni ham ko'rsatish mumkin. Bunda shuni esda tutish kerakki, eng minimal kun 1-raqamga, eng minimal oy esa 0-raqamga ega. Demak, minus birinchi kun oldingi oyning oxiridan 2 kuniga to'g'ri keladi, minus birinchi oy esa shunchaki oldingi yilning oxirgi oyiga to'g'ri keladi:

javascriptlet date = new Date(2018, 1, -1); // -1 kunni ko'rsatamiz
console.log(date); // natijada 30 yanvar bo'ladi
javascriptlet date = new Date(2018, -1, 1); // -1 oyni ko'rsatamiz
console.log(date); // natijada 2017 yil 1 dekabr bo'ladi

Yuqorida aytilganlarning barchasi soatlar, daqiqalar va soniyalar bilan ham bir xil ishlaydi:

javascriptlet date = new Date(2018, 0, 1, 24, 0, 0); // 24-chi soatni ko'rsatamiz
console.log(date); // natijada 2 yanvar, 0 soat bo'ladi
javascriptlet date = new Date(2018, 0, 1, 25, 0, 0); // 25-chi soatni ko'rsatamiz
console.log(date); // natijada 2 yanvar, 1 soat bo'ladi
Задание 1

Quyidagi vaqt nuqtasini JavaScript qaysi sanaga o'zgartirishini aniqlang:

javascriptlet date = new Date(2018, 1, 35);
console.log(date); // qaysi sana bo'ladi?
Задание 2

Quyidagi vaqt nuqtasini JavaScript qaysi sanaga o'zgartirishini aniqlang:

javascriptlet date = new Date(2018, 15, 1);
console.log(date); // qaysi sana bo'ladi?
Задание 3

Quyidagi vaqt nuqtasini JavaScript qaysi sanaga o'zgartirishini aniqlang:

javascriptlet date = new Date(2018, 3, 31);
console.log(date); // qaysi sana bo'ladi?
Задание 4

Quyidagi vaqt nuqtasini JavaScript qaysi sanaga o'zgartirishini aniqlang:

javascriptlet date = new Date(2018, 1, 31);
console.log(date); // qaysi sana bo'ladi?
Задание 5

Quyidagi vaqt nuqtasini JavaScript qaysi sanaga o'zgartirishini aniqlang:

javascriptlet date = new Date(2018, 12, 33);
console.log(date); // qaysi sana bo'ladi?
Задание 6

Quyidagi vaqt nuqtasini JavaScript qaysi sanaga o'zgartirishini aniqlang:

javascriptlet date = new Date(2018, 33, 33);
console.log(date); // qaysi sana bo'ladi?
Задание 7

Quyidagi vaqt nuqtasini JavaScript qaysi sanaga o'zgartirishini aniqlang:

javascriptlet date = new Date(2018, 5, 0);
console.log(date); // qaysi sana bo'ladi?
Задание 8

Quyidagi vaqt nuqtasini JavaScript qaysi sanaga o'zgartirishini aniqlang:

javascriptlet date = new Date(2018, 0, 0);
console.log(date); // qaysi sana bo'ladi?
Задание 9

Quyidagi vaqt nuqtasini JavaScript qaysi sanaga o'zgartirishini aniqlang:

javascriptlet date = new Date(2018, -12, -33);
console.log(date); // qaysi sana bo'ladi?
Задание 10

Quyidagi vaqt nuqtasini JavaScript qaysi sanaga o'zgartirishini aniqlang:

javascriptlet date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // qaysi sana bo'ladi?
Задание 11

Quyidagi vaqt nuqtasini JavaScript qaysi sanaga o'zgartirishini aniqlang:

javascriptlet date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // qaysi sana bo'ladi?
Задание 12

Quyidagi vaqt nuqtasini JavaScript qaysi sanaga o'zgartirishini aniqlang:

javascriptlet date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // qaysi sana bo'ladi?