2016-03-18 99 views
0

我有一個計算開始日期和結束日期的函數。Javascript日期比較奇怪行爲

它然後打印出這個代碼:

​​

但在我的控制檯窗口,攀比返回false,即使他們應該返回true!

currentDate: Fri Mar 18 2016 14:09:26 GMT-0500 (CDT)angular.js:12722 
currentDate: Fri Mar 18 2016 08:00:26 GMT-0500 (CDT) false 
currentDate: Fri Mar 18 2016 19:30:26 GMT-0500 (CDT) false 

我在這裏做錯了什麼?

+0

嘗試沒有'valueOf'調用 – acbabis

+0

下面的答案應該幫助你:http://stackoverflow.com/questions/492994/ compare-two-dates-with-javascript –

+0

謝謝。我的問題與創建當前日期時不使用「新」關鍵字有關。 – Jimothy

回答

1

我沒有關於變量的完整上下文,但我創建了一個plunker,並按照預期的方式使用setTimeout。請檢查的valueOf()如何工作正常,並給予真正

var currentDate, endDate, startDate= new Date(); 

setTimeout(function(){ 
    currentDate = new Date(); 
}, 1000) 
setTimeout(function(){ 
    endDate = new Date(); 
},2000) 

setTimeout(function(){ 
    $log.log("currentDate: " + currentDate); 
    $log.log("currentDate: " + startDate + " " + (currentDate.valueOf() > startDate.valueOf())); 
    $log.log("currentDate: " + endDate + " " + (currentDate.valueOf() < endDate.valueOf())); 
    $scope.message = 'Hello World!'; 
},3000);