2016-03-21 70 views
1

我在我的代碼中使用了JavaScript Date()實用程序,通過比較兩個不同日期來獲取當前任務。有什麼方法可以比較負數0即ie。 -0從Math.sign(-0)返回?

otApp.TaskPanelUtils.getDaysDiff = function(task) 
    { 
     var current = new Date(); 
     var taskDueDate = new Date(task.unformattedDueDate()) 
     return Math.trunc((current.getTime()-taskDueDate.getTime())/otApp.TaskPanelUtils.oneDay); 
    } 

var daysDiff = otApp.TaskPanelUtils.getDaysDiff(taskItem); 

if(daysDiff==0 && Math.sign(daysDiff)==0) 
{ 
    tempItems.push(taskItem); 
} 

上面的代碼工作,即使我得到「-0」 負0作爲getDaysDiff()結果。

我想只有在積極的「0」的情況下,以填補tempItems

Math.sign(-0)將返回-0,那麼如何與對比來「-0」或-0不工作?

+0

的可能的複製[區分+0和-0](http://stackoverflow.com/questions/7223717/differentia ting-0和-0) – JJJ

+0

你真的應該選擇一個問題。 「有沒有辦法」或「它是如何不起作用的」。 –

+0

的可能的複製[是+0和-0相同?(http://stackoverflow.com/questions/7223359/are-0-and-0-the-same) – whd

回答

1

即使因 getDaysDiff()而得到「-0」負0,上述代碼仍在使用。

因爲0-0評估爲0

Math.sign(-0) == Math.sign(0) //outputs true 

0 == -0; //outputs true 

0 === -0 //outputs true 

String(-0) //outputs "0" 

編輯:

我建議簡化/修改功能,使其返回boolean

otApp.TaskPanelUtils.getDaysDiff = function(task) 
{ 
    var current = new Date(); 
    var taskDueDate = new Date(task.unformattedDueDate()) 
    return ((current.getTime()-taskDueDate.getTime())/otApp.TaskPanelUtils.oneDay) > 0; 
} 

並以此

if(otApp.TaskPanelUtils.getDaysDiff(taskItem)) 
{ 
    tempItems.push(taskItem); 
} 
+0

嗨@ gurvinder372,Math.sign(-0)將返回-0和Math.sign(0)將根據文檔https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign,如何消費Math.sign(返回0, - 0)用於比較negarive零。 –

+0

@RajuPutchala'Object.is(0,-0)'應該給'false'。但是,我不認爲你需要這樣做。剛剛從getDiff方法返回true/false,如果值<0 – gurvinder372

+0

是的,我會盡量給爲您的suggestions.thanks –