Я нашел этот вопрос, когда хочу вычислить две даты, но у даты есть значение часов и минут, я изменил ответ @ michael-liu, чтобы он соответствовал моим требованиям, и он прошел мой тест.
разность дней 2012-12-31 23:00
и 2013-01-01 01:00
должны равняться 1. (2 часа)
разность дней 2012-12-31 01:00
и 2013-01-01 23:00
должна равняться 1. (46 часов)
function treatAsUTC(date) {
var result = new Date(date);
result.setMinutes(result.getMinutes() - result.getTimezoneOffset());
return result;
}
var millisecondsPerDay = 24 * 60 * 60 * 1000;
function diffDays(startDate, endDate) {
return Math.floor(treatAsUTC(endDate) / millisecondsPerDay) - Math.floor(treatAsUTC(startDate) / millisecondsPerDay);
}