I try to loop through two given date time. I have to make some calculation on each day of the range. I made a JsBin to setup the problem.
const timeRange1 = ['2019-10-22 14:00:00', '2019-10-22 19:00:00'];
const timeRange2 = ['2019-10-22 13:30:00', '2019-10-24 10:00:00'];
const timeRange3 = ['2019-10-22 06:00:00', '2019-10-23 23:00:00'];
const timeRange4 = ['2019-10-21 23:00:00', '2019-10-22 01:00:00'];
function loop(range) {
const rangeStart = moment(range[0])
const rangeEnd = moment(range[1])
let i = 0
for (let m = rangeStart; m.diff(rangeEnd, 'days') <= 0; m.add(1, 'days')) {
i++
}
return i
}
// Here you can see the expected values and the wrong results.
console.log(loop(timeRange1)); // 1 - 2
console.log(loop(timeRange2)); // 3 - 3
console.log(loop(timeRange3)); // 2 - 3
console.log(loop(timeRange4)); // 2 - 2
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>