Учитывая даты в формате ГГГГ-ММ-ДД, вы можете использовать конструктор Date, вычесть одно из другого и разделить на количество миллисекунд в одном дне.
Строки будут анализироваться как UTC, поэтому нет проблем с переходом на летнее время, и ECMAScript имеет ровно 8,64e7 мс в день. Даже если вам нужно округлить, летнее время не меняет значение более чем на 1 час (а в некоторых местах меньше), поэтому округление в порядке. Э.Г.
var d0 = '2017-07-31';
var d1 = '2017-07-28';
var diffDays = (new Date(d0) - new Date(d1)) / 8.64e7;
console.log(diffDays);
Обычно рекомендуется избегать встроенного синтаксического анализатора, однако в этом случае, скорее всего, все в порядке. Но для уверенности, проанализируйте строки вручную, библиотека может помочь, но для этого требуется только двухстрочная функция.
Если ваши даты не созданы, как указано выше, и не установлены на полночь, вы можете получать дни между датами, устанавливая их на полночь, вычитая и округляя, например,
var d0 = new Date(2017, 6, 31, 23, 15, 45); // 2017-07-31T23:15:25 local
var d1 = new Date(2017, 6, 28, 3, 15, 45); // 2017-07-28T03:15:25 local
function diffDays(d0, d1) {
var a = new Date(d0).setHours(0,0,0,0);
var b = new Date(d1).setHours(0,0,0,0);
return Math.round((a - b) / 8.64e7);
}
console.log(diffDays(d0, d1));