我正在编写一个设备租赁应用程序,其中根据租赁的持续时间(以天为单位)向客户收取租赁设备的费用。因此,基本上,(每日费用 * 天数)= 总费用。
对于客户端的即时反馈,我正在尝试使用 Javascript 来找出两个日历日期的差异。我四处寻找,但没有找到我想要的东西。我见过的大多数解决方案都是以下形式:
function dateDiff1(startDate, endDate) {
return ((endDate.getTime() - startDate.getTime()) / 1000*60*60*24);
}
我的问题是设备可以在这两个日期的任何时间检查和归还,无需额外费用。上面的代码正在计算两个日期之间的 24 小时周期数,当时我对日历天数很感兴趣。
例如,如果有人在 7 月 6 日早上 6 点检查设备并在 7 月 7 日晚上 10 点归还设备,则上面的代码将计算出超过 24 小时的时间段,并返回 2。所需的结果是 1,因为只有一个日历日期过去了(即第 6 天到第 7 天)。
我找到的最接近的解决方案是这个函数:
function dateDiff2(startDate, endDate) {
return endDate.getDate() - startDate.getDate();
}
只要两个日期在同一个月内,这正是我想要的。但是,由于 getDate() 只返回月份中的第几天(即 1-31),当日期跨越多个月份时它不起作用(例如 7 月 31 日到 8 月 1 日是 1 天,但上面计算的是 1 - 31,或者-29)。
在后端,在 PHP 中,我使用 gregoriantojd(),它似乎工作得很好(请参阅此帖子的示例)。我只是在 Javascript 中找不到等效的解决方案。
有人有想法么?