Я пишу заявку на аренду оборудования, в которой с клиентов взимается плата за аренду оборудования в зависимости от срока аренды (в днях). Таким образом, в основном, (ежедневная плата * количество дней) = общая стоимость.
Для мгновенной обратной связи на стороне клиента я пытаюсь использовать Javascript, чтобы выяснить разницу в двух календарных датах. Я искал вокруг, но ничего, что я нашел, не совсем то, что я ищу. Большинство решений, которые я видел, имеют вид:
function dateDiff1(startDate, endDate) {
return ((endDate.getTime() - startDate.getTime()) / 1000*60*60*24);
}
Моя проблема в том, что оборудование можно проверить и вернуть в в любое время суток в течение этих двух дат без дополнительной оплаты. Приведенный выше код рассчитывает количество 24-часовых периодов между двумя датами, когда меня действительно интересует количество календарных дней.
Например, если кто-то проверил оборудование в 6 часов утра 6 июля и вернул его в 10 часов вечера 7 июля, приведенный выше код вычислит, что прошло более одного 24-часового периода, и вернет 2. Желаемый результат равен 1 , поскольку истекла только одна календарная дата (т.е. с 6-го по 7-е).
Наиболее близким решением, которое я нашел, является эта функция:
function dateDiff2(startDate, endDate) {
return endDate.getDate() - startDate.getDate();
}
, который делает именно то, что я хочу, если эти две даты находятся в одном месяце. Однако, поскольку getDate () возвращает только день месяца (т. Е. 1-31), он не работает, если даты охватывают несколько месяцев (например, с 31 июля по 1 августа - 1 день, а в приведенном выше примере 1 - 31 или -29).
В бэкэнде в PHP я использую gregoriantojd (), который, кажется, работает нормально (см. этот пост для примера). Я просто не могу найти эквивалентное решение в Javascript.
У кого-нибудь есть идеи?