2016-03-05 3 views
0

Я использую, что:разница Дата работает в Firefox и IE, но вернуть NaN в 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)); 

      ... 

Он не работает и возвращает NaN в Chrome (на самом деле я пытаюсь изменить дни на DateTimePicker и это работает до 12-го дня, но он возвращает NaN после 12-го дня).

Но он работает в Firefox или IE.

+1

Вы уверены, что это не работает в хроме? что $ ('# StartDate'). val() и $ ('# EndDate'). val() return? –

+0

В течение 10 000-го раза не используйте конструктор Date (или Date.parse, они делают то же самое) для анализа строк, это в значительной степени зависит от реализации. Напишите 2-строчную функцию, чтобы разобрать ее вручную (или использовать библиотеку, но вы потратите больше времени на изучение библиотеки, чем на запись функции). – RobG

ответ

-2

Используйте momentjs, если ваш вход «DD/MM/YYYY»

+0

Это не сработало. Я не понимаю, почему он работает в Firefox или IE и почему не в Chrome –

+0

Покажите, пожалуйста, формат значения во входных данных с идентификаторами 'StartDate' и' EndDate'? –

+0

* должен быть номер * не соответствует действительности. – Jai

0

Не используйте Date конструктор для разбора строк, всегда вручную разобрать их (библиотека может помочь, но, как правило, не требуется). Например, для анализа строки в формате 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); 
} 
Смежные вопросы