2010-09-26 2 views
2

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

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

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

Итак, как бы определить, сколько «целых или частичных выходных» существует между 2 датами в PHP?

+0

Разъяснение в регулярном выражении: [Суббота | воскресенье] {1,2} = один уик-энд "рассчитывать?" –

+0

Возможно, мне стоит начать второй вопрос, спрашивая, что это значит, суббота + воскресенье действительно одно и то же. суббота == воскресенье * суббота + воскресенье –

+0

Так что его курс на выходные, а не курс за день в выходные. –

ответ

3

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

$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++; 
} 
+0

ли это для него начальный день - воскресенье? помните воскресенье -> воскресенье на следующей неделе также считается 2 выходным днями –

Смежные вопросы