使用 getTime() 方法比較日期,它會(huì)傳回從紀(jì)元開(kāi)始的毫秒數(shù)(即一個(gè)數(shù)字)進(jìn)行比較:
var startDate1 = new Date("02/10/2012"); var startDate2 = new Date("01/10/2012"); var startDate3 = new Date("01/10/2012"); alert(startDate1.getTime() > startDate2.getTime()); // true alert(startDate2.getTime() == startDate3.getTime()); //true
另外,請(qǐng)考慮使用明確的年份/月份/日期數(shù)字來(lái)建構(gòu) Date 對(duì)象,而不是依賴(lài)字串表示(參見(jiàn):Date.parse())。並且請(qǐng)記住,JavaScript 中的日期始終使用客戶端(瀏覽器)的時(shí)區(qū)表示。
這是因?yàn)樵诘诙N情況下,實(shí)際的日期物件被比較,而兩個(gè)物件永遠(yuǎn)不會(huì)相等。將它們強(qiáng)制轉(zhuǎn)換為數(shù)字:
alert( +startDate2 == +startDate3 ); // true
如果您想要更明確地將其轉(zhuǎn)換為數(shù)字,可以使用以下方法之一:
alert( startDate2.getTime() == startDate3.getTime() ); // true
o或
alert( Number(startDate2) == Number(startDate3) ); // true
是參考規(guī)範(fàn)的 §11.9.3 抽象相等比較演算法,基本上它說(shuō)當(dāng)比較對(duì)象時(shí),只有當(dāng) obj1 == obj2 引用同一個(gè)對(duì)象時(shí)才為真,否則結(jié)果為假。