Pelarasan Tarikh Automatik dalam JavaScript

JavaScript mempunyai ciri yang sangat menarik dan berguna: jika saat mencipta objek Date ditetapkan detik masa yang tidak betul - ia akan dikira semula secara automatik kepada yang betul. Mari kita lihat contohnya.

Seperti yang anda tahu, tarikh 35 Januari tidak wujud. Hari maksimum yang mungkin bagi Januari ialah 31. Ini bermakna tarikh kita 35 Januari mempunyai 4 hari lebihan. JavaScript dalam kes seperti ini hanya akan menambah 4 hari lebihan itu kepada bulan berikutnya:

javascriptlet date = new Date(2018, 0, 35);
console.log(date); // akan dapat 4 Februari

Bukan hanya hari lebihan yang boleh dinyatakan, malah bulan juga. Perlu diingat bahawa bulan bermula dari sifar, oleh itu bulan terakhir yang betul ialah bulan 11. Jika bulan 12 dinyatakan, maka ia akan menjadi Januari tahun berikutnya:

javascriptlet date = new Date(2018, 12, 1); // nyatakan bulan ke-12
console.log(date); // akan dapat 1 Januari 2019

Pelarasan yang diterangkan juga berfungsi ke arah yang lebih kecil. Seperti yang anda tahu, hari terkecil bulan ialah hari bernombor 1. Oleh itu, jika hari bernombor 0 dinyatakan, maka ia akan menjadi hari terakhir bulan sebelumnya:

javascriptlet date = new Date(2018, 1, 0); // nyatakan hari sifar
console.log(date); // akan dapat 31 Januari

Nilai negatif untuk hari dan bulan juga boleh dinyatakan. Perlu diingat bahawa hari minimum mempunyai nombor 1, dan bulan minimum mempunyai nombor 0. Ini bermakna, hari tolak pertama jatuh pada 2 hari dari hujung bulan sebelumnya, dan bulan tolak pertama jatuh pada bulan terakhir tahun sebelumnya:

javascriptlet date = new Date(2018, 1, -1); // nyatakan -1 hari
console.log(date); // akan dapat 30 Januari
javascriptlet date = new Date(2018, -1, 1); // nyatakan -1 bulan
console.log(date); // akan dapat 1 Disember 2017

Semua yang dinyatakan di atas berfungsi sama dengan jam, minit dan saat:

javascriptlet date = new Date(2018, 0, 1, 24, 0, 0); // nyatakan jam ke-24
console.log(date); // akan dapat 2 Januari, 0 jam
javascriptlet date = new Date(2018, 0, 1, 25, 0, 0); // nyatakan jam ke-25
console.log(date); // akan dapat 2 Januari, 1 jam
Задание 1

Tentukan kepada tarikh mana JavaScript akan mengubah detik masa berikut:

javascriptlet date = new Date(2018, 1, 35);
console.log(date); // tarikh apakah yang akan jadi?
Задание 2

Tentukan kepada tarikh mana JavaScript akan mengubah detik masa berikut:

javascriptlet date = new Date(2018, 15, 1);
console.log(date); // tarikh apakah yang akan jadi?
Задание 3

Tentukan kepada tarikh mana JavaScript akan mengubah detik masa berikut:

javascriptlet date = new Date(2018, 3, 31);
console.log(date); // tarikh apakah yang akan jadi?
Задание 4

Tentukan kepada tarikh mana JavaScript akan mengubah detik masa berikut:

javascriptlet date = new Date(2018, 1, 31);
console.log(date); // tarikh apakah yang akan jadi?
Задание 5

Tentukan kepada tarikh mana JavaScript akan mengubah detik masa berikut:

javascriptlet date = new Date(2018, 12, 33);
console.log(date); // tarikh apakah yang akan jadi?
Задание 6

Tentukan kepada tarikh mana JavaScript akan mengubah detik masa berikut:

javascriptlet date = new Date(2018, 33, 33);
console.log(date); // tarikh apakah yang akan jadi?
Задание 7

Tentukan kepada tarikh mana JavaScript akan mengubah detik masa berikut:

javascriptlet date = new Date(2018, 5, 0);
console.log(date); // tarikh apakah yang akan jadi?
Задание 8

Tentukan kepada tarikh mana JavaScript akan mengubah detik masa berikut:

javascriptlet date = new Date(2018, 0, 0);
console.log(date); // tarikh apakah yang akan jadi?
Задание 9

Tentukan kepada tarikh mana JavaScript akan mengubah detik masa berikut:

javascriptlet date = new Date(2018, -12, -33);
console.log(date); // tarikh apakah yang akan jadi?
Задание 10

Tentukan kepada tarikh mana JavaScript akan mengubah detik masa berikut:

javascriptlet date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // tarikh apakah yang akan jadi?
Задание 11

Tentukan kepada tarikh mana JavaScript akan mengubah detik masa berikut:

javascriptlet date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // tarikh apakah yang akan jadi?
Задание 12

Tentukan kepada tarikh mana JavaScript akan mengubah detik masa berikut:

javascriptlet date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // tarikh apakah yang akan jadi?