2016-03-05 79 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); 
} 
相关问题