function diffDates (startDate, endDate, includeWeeks) {
const units = ["y", "M"].concat((includeWeeks ? ["w"] : []).concat(["d", "h", "m", "s"]))
const whittleDate = (givenDate, givenUnits, duration) => {
let diff = givenDate.diff(startDate, givenUnits[0])
let diffRemainder = givenDate.subtract(diff, givenUnits[0])
let newduration = duration.add(diff, givenUnits[0])
return givenUnits.length > 1 ? whittleDate(diffRemainder, givenUnits.slice(1), newduration) : newduration
}
return whittleDate(endDate, units, dayjs.duration())
}