當我創建兩個完全相同的JavaScript Date
對象並對它們進行比較時,看起來它們並不相同。如何測試兩個JavaScript日期是否具有相同的值?兩個相同的JavaScript日期不相等
var date1 = new Date('Mon Mar 11 2013 00:00:00');
var date2 = new Date('Mon Mar 11 2013 00:00:00');
console.log(date1 == date2); //false?
當我創建兩個完全相同的JavaScript Date
對象並對它們進行比較時,看起來它們並不相同。如何測試兩個JavaScript日期是否具有相同的值?兩個相同的JavaScript日期不相等
var date1 = new Date('Mon Mar 11 2013 00:00:00');
var date2 = new Date('Mon Mar 11 2013 00:00:00');
console.log(date1 == date2); //false?
看來this has been addressed already。
要檢查日期是否相等,它們必須被轉換成他們的原語:
所有的date1.getTime()=== date2.getTime()
//true
首先,你在這裏比較的參考吭聲錯誤。看看這個:
var x = {a:1};
var y = {a:1};
// Looks like the same example huh!
alert (x == y); // It says false
在這裏,雖然對象看起來相同,但它們在內存中擁有不同的槽。 引用僅存儲對象的地址。因此兩個參考文獻都是不同
所以現在,我們必須比較這些值,因爲您知道參考比較在這裏不起作用。 你可以做
if (date1 - date2 == 0) {
// Yep! Dates are equal
} else {
// Handle different dates
}
好的答案 - 特別是因爲我發現date.GetTime()誤導(表明它會給我時間(即使我知道沒有時間對象)) – 2014-12-03 17:59:18
我在for循環中許多類型的值進行比較,所以我無法通過減去評估他們,而是我比較
var a = [string1, date1, number1]
var b = [string2, date2, number2]
for (var i in a){
if(a.toString() == b.toString()){
// some code here
}
}
之前也coverted值的字符串檢查[這](http://stackoverflow.com/questions/7244513/javascript-date-comparisons-dont-equal) – 2013-03-18 05:47:59
要看看兩個日期是否相等,你可以做'+ a == + b'或'! (a - b)',但這可能有點混亂。不要將解析隨機日期字符串解析爲Date構造函數,要麼提供符合標準的字符串(尚未得到一致支持),要麼按照[ECMA-262](http://www.ecma-international.org/)提供值ECMA-262/5.1 /#仲丁基15.9.3.1)。 – RobG 2013-03-18 05:53:49