Bandingkan objek Tarikh JavaScript
P粉724737511
2023-08-03 17:28:16
<p>Apabila membandingkan objek tarikh dalam JavaScript, saya mendapati ia tidak kembali benar walaupun apabila membandingkan tarikh yang sama. </p>
<pre class="brush:php;toolbar:false;">var startDate1 = new Date("02/10/2012");
var startDate2 = new Date("01/10/2012");
var startDate3 = new Date("01/10/2012");
alert(startDate1>startDate2);
alert(startDate2==startDate3); //false</pre>
<p>Bagaimanakah saya membandingkan tarikh ini untuk kesaksamaan? Saya mahu menggunakan objek Tarikh JavaScript asli dan bukannya pustaka pihak ketiga kerana tidak sesuai menggunakan pustaka JavaScript pihak ketiga hanya untuk membandingkan tarikh. </p>
Banding tarikh menggunakan kaedah getTime(), yang mengembalikan bilangan milisaat sejak zaman (iaitu nombor) untuk perbandingan:
Selain itu, pertimbangkan untuk menggunakan nombor tahun/bulan/hari yang jelas untuk membina objek Tarikh dan bukannya bergantung pada perwakilan rentetan (lihat: Date.parse()). Dan ingat, tarikh dalam JavaScript sentiasa diwakili menggunakan zon waktu (pelayar) pelanggan.
Ini kerana dalam kes kedua, objek tarikh sebenar dibandingkan dan kedua-dua objek tidak pernah sama. Hantar mereka ke nombor:
Jika anda ingin menukarnya kepada nombor dengan lebih jelas, anda boleh menggunakan salah satu kaedah berikut:
o atau
ialah rujukan kepada §11.9.3 Algoritma Perbandingan Kesamaan Abstrak spesifikasi, pada asasnya ia mengatakan bahawa apabila membandingkan objek, ia adalah benar hanya jika obj1 == obj2 merujuk kepada objek yang sama, jika tidak, hasilnya adalah palsu.