const li = Array.prototype.filter.call(
document.querySelector('ul').children,
function(n) {
return this.every(([ k, v ]) => v === n.querySelector(`.${k}`).innerText);
},
Object.entries(items)
);
const li = [];
COLLECT_LI:
for (const n of document.querySelectorAll('li')) {
for (const k in items) {
if (Object.hasOwn(items, k) && items[k] !== n.querySelector('.' + k).textContent) {
continue COLLECT_LI;
}
}
li.push(n);
}
Сформулируйте решение по шагам, как бы вы считали стоимость без написания кода, например самостоятельно?
период который ввёл пользователь это некое кол-во дней
проходим в цикле по каждому дню и проверяем в какой диапазон дат он входит
в зависимости от этого узнаем стоимсоть каждого дня и эту стоимость суммируем
на выходе получаем итоговую цену
$time = new DateTime('2018-08-07 10:30:00');// начало отсчёта
$time_off = new DateTime('2018-08-22 12:30:00');// конец отсчёта
$result = $time->diff($time_off);
echo "Между датами {$result->d} дн. {$result->h} час. {$result->i} мин.";
/**
* Предполагается, что dateStart <= dateEnd. Если это не гарантируется, нужно их привести к такому виду внутри функции.
*/
function getIntersectDays(DateTime $dateStart1, DateTime $dateEnd1, DateTime $dateStart2, DateTime $dateEnd2) : int {
$intersectionEnd = min($dateEnd1, $dateEnd2);
$intersectionStart = max($dateStart1, $dateStart2);
if ($intersectionStart >= $intersectionEnd) return 0;
return (int)$intersectionStart->diff($intersectionEnd)->format('%a');
}