Посчитать выходные между 2 датами

Я пишу калькулятор цен, где выходные имеют специальную цену. Для этого мне нужно знать, сколько выходных между двумя датами.

Обратите внимание, что под выходными я подразумеваю, что если они хотят, чтобы четверг был вторником, суббота и воскресенье - это не 2 дня с выходным, а 1 выходной с единым. Таким образом, для четверга -> вторника это будет считаться за 1 уик-энд.

Для субботы -> субботы это будет считаться за 2 выходных, поскольку первая суббота не совпадает с следующей субботой. То же самое можно сказать и о воскресеньях и воскресеньях, здесь учитываются выходные дни, независимо от того, являются ли они полными выходными или частичными выходными. До тех пор, пока часть или любая часть выходных дней попадает в этот диапазон дат, она считается 1 выходной. Лучшая аналогия, которую я могу придумать, - это рассматривать выходные дни как один день, который длится 48 часов, а не 2, который длится 24.

Итак, как я могу определить, сколько "полных или частичных выходных" между двумя датами в php?

1 ответ

Решение

Мы должны начать с определения количества дней между датами. Это было бы что-то вроде

$n = floor((timestamp_end - timestamp_start)/86400);

Если вы скажете, что суббота -> суббота = 2, то, если наш начальный день не суббота, а количество дней не является произведением 7, количество выходных будет $n/7, в противном случае $n/7+1. Таким образом, мы могли бы начать с.

$n_weekends = ceil($n/7);

А потом

if (date("N", timestamp_start) == 6 && $n%7 == 0 ){
  $n_weekends++;  
}
Другие вопросы по тегам