Tugas membandingkan tarikh dalam JavaScript boleh mencabar apabila masa memainkan peranan penting. Untuk menangani isu ini, pembangun boleh menggunakan pendekatan yang mudah: mengabaikan masa dan memberi tumpuan semata-mata pada komponen tarikh. Walau bagaimanapun, untuk mencapai matlamat ini secara berkesan memerlukan pemahaman yang terperinci tentang selok-belok objek Tarikh.
Memahami Masalah
Satu perangkap biasa timbul apabila membandingkan tarikh menggunakan operator yang lebih besar daripada ( >). Pertimbangkan coretan kod berikut:
const now = new Date(); const input = $('datum').getValue(); const dateArray = input.split('/'); const userMonth = parseInt(dateArray[1]) - 1; const userDate = new Date(); userDate.setFullYear(dateArray[2], userMonth, dateArray[0], now.getHours(), now.getMinutes(), now.getSeconds(), now.getMilliseconds()); if (userDate > now) { alert(now + '\n' + userDate); }
Dalam kod ini, userDate dibina dengan masa semasa, yang mungkin menghasilkan negatif palsu apabila membandingkannya dengan tarikh sekarang, sekarang. Untuk membetulkan isu ini, kita mesti mengasingkan aspek tarikh daripada komponen masa.
Menetapkan Waktu kepada Sifar
Untuk menghapuskan pengaruh masa, kami menggunakan kaedah setHours daripada objek Tarikh. Dengan menetapkan jam, minit, saat dan milisaat kepada sifar, kami memangkas tarikh kepada bentuk paling tulennya dengan berkesan:
date1.setHours(0, 0, 0, 0);
Kesederhanaan Perbandingan
Dengan masa komponen terbatal, tugas membandingkan tarikh menjadi lebih mudah. Kod berikut menunjukkan perkara ini:
date1 = new Date(); date2 = new Date(2011, 8, 20); date1.setHours(0, 0, 0, 0); if (date1 > date2) { // Logic for dates only }
Kini, tarikh dinilai semata-mata berdasarkan hari, bulan dan tahunnya, memastikan perbandingan yang tepat tanpa faktor masa yang mengelirukan. Teknik ini menyediakan cara yang teguh dan boleh dipercayai untuk membezakan perbezaan tarikh dalam JavaScript.
Atas ialah kandungan terperinci Bagaimana untuk Memastikan Perbandingan Tarikh Tepat dalam JavaScript: Adakah Zon Masa Mempengaruhi Hasil?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!