2016-05-16 2 views
2

мне нужна ваша помощь,Функция производит неправильную разницу

По какой-то странной причине, функция ниже возвращает разницу неправильной даты значения -1, когда Дата2 вычитается из текущей даты.

Формат даты используется: дд/мм/гггг ч: мм тт

Пример правильного использования:

Date2 (15/05/2016 12:00 AM) - Date1 (16/05/2016 12:00 AM) = -1 
Date2 (16/05/2016 12:00 AM) - Date1 (16/05/2016 12:00 AM) = 0 
Date2 (17/05/2016 12:00 AM) - Date1 (16/05/2016 12:00 AM) = +1 


function test() { 

    var date1 = new Date() 

    var date2 = new Date("16/05/2016 1:37 PM") 

    var diff = (date2.getTime() - date1.getTime())/(1000*60*60*24) 

    diff = Math.round(diff) 

    alert(diff) 
} 
+2

'вар date2 = новая дата ("16/05/2016 1:37 вечера")' является Недопустимая дата, date2.getTime() является 'NaN' – IrkenInvader

+2

Ваш' 'date2' возвращает Invalid date'. – C14L

+1

Из [Дата] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date): «Примечание: синтаксический анализ строк даты с помощью конструктора даты (и Date.parse, они эквивалентны), сильно обескуражен из-за различий браузера и несоответствий ». – Tibrogargan

ответ

0

Дата получает следующие аргументы:

Date(year, month, day, hours, minutes, seconds, milliseconds);

Так просто замените эту строку:

var date2 = new Date("16/05/2016 1:37 PM")

с этой линией:

var date2 = new Date(2016, 4, 16, 13, 37);

Вы также можете дать ему дату строку, как вы делали, но тогда вам нужно положить год, а затем месяц, потом день:

var date2 = new Date("2016/05/16 1:37 PM");

+0

Привет, Асаф, я скорректировал формат даты и, похоже, работал, но формат dd/mm/yyyy h: mm tt исходит от датпикера, есть ли способ автоматически и программно отменить дату, прежде чем начинать вычислять разницу дат ? – BobbyJones

+0

Преобразует dd/mm/yyyy в mm/dd/yyyy https://jsfiddle.net/cnkr1o3o/1/ – IrkenInvader

Смежные вопросы