jQuery как парсить дату для расчета количества дней между двумя датами

215
06 февраля 2018, 08:23

Есть 2 input'a для даты и кнопка для расчета:

$(document).ready(function() { 
 
  function dateDiffInDays(a, b) { 
    var _MS_PER_DAY = 1000 * 60 * 60 * 24; 
    var utc1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate()); 
    var utc2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate()); 
    return Math.floor((utc2 - utc1) / _MS_PER_DAY); 
  } 
 
  $("#b").click(function() { 
    var answer; 
    var firstDate = Date.parse($('#inputFirstDate').val()); 
    var secondDate = Date.parse($('#inputSecondDate').val()); 
    alert(dateDiffInDays(firstDate, secondDate)); 
  }); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<input type="date" name="firstDate" id="inputFirstDate" /> 
<input type="date" name="secondDate" id="inputSecondDate" /> 
<input type="button" id="b" value="Расчитать" /> <br>

После попытки провернуть действия с функцией 'dateDiffInDays' с параметрами 'inputFirstDate' и 'inputSecondDate' приходит пустой alert. Может быть ошибка в Date.parse()? Или я еще что-то делаю не так?

Answer 1

Вместо Date.parse() используйте просто new Date() :

$(document).ready(function() { 
  function dateDiffInDays(a, b) { 
    var _MS_PER_DAY = 1000 * 60 * 60 * 24; 
    var utc1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate()); 
    var utc2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate()); 
    return Math.floor((utc2 - utc1) / _MS_PER_DAY); 
  } 
 
  $("#b").click(function() { 
    var firstDate = new Date($('#inputFirstDate').val()); 
    var firstDate2 = Date.parse($('#inputFirstDate').val()); 
 
    // Пример, того какой метод какое значение возвращает 
    console.log('new Date', firstDate); 
    console.log('Date.parse', firstDate2); 
 
    var secondDate = new Date($('#inputSecondDate').val()); 
    console.log(dateDiffInDays(firstDate, secondDate)); 
  }); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<input type="date" name="firstDate" id="inputFirstDate" /> 
<input type="date" name="secondDate" id="inputSecondDate" /> 
<input type="button" id="b" value="Расчитать" /> <br>

READ ALSO
Умножение значения слайдера на число jQuery

Умножение значения слайдера на число jQuery

Отдам все свои драгоценные благодарности в руки тому, кто сможет помочь молодому дизайнеру понять jQuery

234
Как сделать, сам не могу разобраться [требует правки]

Как сделать, сам не могу разобраться [требует правки]

Не знаю как это сделать, посоветуйте пожалуйста каким способом можно и как?

198
Как создать выпадающее меню при нажатии? [требует правки]

Как создать выпадающее меню при нажатии? [требует правки]

Объясните пожалуйста, как создается выпадающее меню при нажатииПриму любую конструкцию, главное, чтобы работало

250