2016-03-05 78 views
0

返回NaN的我使用的:日期區別在Firefox和IE,但在Chrome

function DateDiff(date1, date2) { 

     var datediff = date2.getTime()- date1.getTime(); 
     return (datediff); 
    } 
    $(document).on('dp.change', '#EndDate', function (e) { 
      var StartDate= new Date($('#StartDate').val()); 
      var EndDate= new Date($('#EndDate').val()); 

      alert(DateDiff(EndDate, StartDate)); 

      ... 

它不工作,並在Chrome返回NaN(其實我想改變的DateTimePicker天,它的工作原理直到第12天,但它在第12天后返回NaN)。

但它適用於Firefox或IE。

+1

您確定這不適用於Chrome嗎? $('#StartDate')。val()和$('#EndDate')。val()返回什麼? –

+0

第10,000次,不要使用Date構造函數(或Date.parse,他們做同樣的事情)來解析字符串,它主要依賴於實現。編寫一個2行函數來手動解析它(或者使用一個庫,但是你將花費更多的時間來學習庫,而不是編寫函數)。 – RobG

回答

-2

使用momentjs如果你的輸入爲「DD/MM/YYYY」

+0

它沒有工作。我不明白爲什麼它可以在Firefox或IE中運行,爲什麼不在Chrome瀏覽器 –

+0

請輸入ID爲'StartDate'和'EndDate'的輸入值的格式? –

+0

*必須是數字*不正確。 – Jai

0

不要使用日期構造解析字符串,始終手動解析它們(庫可以幫助,但通常沒有必要)。例如,要解析d/m/y格式的字符串並驗證日期,請考慮:

function parseDMY(s) { 
    var b = s.split(/\D/); 
    var d = new Date(b[2], --b[1], b[0]); 
    return d && d.getMonth() == b[1]? d : new Date(NaN); 
} 
相關問題