這是我的第一個問題在stackoverflow。如何確定2個日期對象是否相等?
var str="Oct 13,2011";
var date1=new Date(str);
var date2=new Date(str);
當然 的valueOf(日期1)==的valueOf(DATE2)
但爲什麼 日期1!= date2的
,或者說,如何確定2日期對象,如果他們彼此相當的
。
日期是一個js對象
這是我的第一個問題在stackoverflow。如何確定2個日期對象是否相等?
var str="Oct 13,2011";
var date1=new Date(str);
var date2=new Date(str);
當然 的valueOf(日期1)==的valueOf(DATE2)
但爲什麼 日期1!= date2的
,或者說,如何確定2日期對象,如果他們彼此相當的
。
日期是一個js對象
的Javascript對象僅當它們指代相同的對象基準相等。你的代碼中不是這種情況。
(參考:What is the standard definition of object equality for "=="?)
編輯:隨着一點點的類型轉換,你可以這樣做:
var str="Oct 13,2011";
var date1 = new Date(str);
var date2 = new Date(str);
console.log(+date1 == +date2); // true
==
或===
比較對象的引用。
日期1和日期2由不同的參考文獻創建。因此,它們不是平等的。
您的日期1和date2轉換成原始數據類型和比較
date1.getTime()=== date2.getTime()
結果:真
使用==
一般不工作,因爲它比較對象identities沒有價值。
使用+
前綴或getTime()
轉換爲毫秒之前,如果您的日期對象有一個時間組件並且您只希望比較它們的日期部分,比較也可能失敗。 (不要試圖達到toDate()
方法,因爲這是一個月中的某一天,並丟棄一個月和一年!)。
這似乎是toDateString()
有用的幾次之一,對於不使用其他庫的簡潔解決方案而言是有用的。
var date1=new Date("2014-12-10");
var date2=new Date("2014-12-10T01:00");
+date1 == +date2
>false
date1.getTime() == date2.getTime()
>false
date1.toDateString() == date2.toDateString()
>true
小調:Javascript區分大小寫,這應該是'new Date()',大寫'D'。 –