функция php при подсчете 30 дней, но без конца недели или праздника

Мне нужна помощь.

Мне нужно создать функцию PHP на счет 30 дней. Но если последний день выходных или праздников. Поэтому я должен добавить дни, чтобы последний день был рабочим. 30 дней не должны заканчиваться в выходные или праздничные дни. Я искал форумы и гугл, но ничего не нашел. Я нашел счет рабочих дней, но не то, что мне нужно. Спасибо за помощь.

          $holiday = array(
'01-01',
'01-06',
'03-30',
'04-01',
'04-02',
'05-01',
'05-08',
'07-05',
'08-29',
'09-01',
'09-15',
'11-01',
'11-17',
'12-24',
'12-25',
'12-26',
);

$count = 0;
$temp = strtotime($row['prijem']); //example as today is 2016-03-25
while($count<30){
$newdate = strtotime('+1 day', $temp);
$nextnewdate = date('m-d', $newdate);
if(!in_array($nextnewdate, $holiday)){
$count++;
}
$temp = $newdate;
}

$end = date("d.m.Y", $temp);

дата начала 24.05.2018, сегодня. дата окончания 23.06.2018.

и теперь мне нужно всегда, когда конечной датой является выходной или праздничный день, преобразованный в рабочий день. Так что если дата окончания суббота, то результат будет в понедельник 25.06.2018. И снова, если бы это был выходной, добавьте больше дней в рабочий день.

0

Решение

Нет необходимости в этом цикле, так как вам важно только, если 30-й день — рабочий день или нет (вместо того, чтобы заботиться, если каждый день между ними). Просто добавьте 30 дней напрямую, а затем проверьте результат.

$holidays = array(
'01-01',
'01-06',
'03-30',
'04-01',
'04-02',
'05-01',
'05-08',
'07-05',
'08-29',
'09-01',
'09-15',
'11-01',
'11-17',
'12-24',
'12-25',
'12-26',
);

// the starting date, $row['prijem'] in your example
$temp = strtotime("2016-03-25");

// add 30 days to the starting date
$plus30days = strtotime("+30 days", $temp);

// while the end date is a holiday or weekend, add another day
// do this check until the end date is _not_ a weekend or holiday
while(in_array(date("m-d", $plus30days), $holidays) || date('N', $plus30days) >= 6)
{
$plus30days = strtotime("+1 day", $plus30days);
}

echo date("d.m.Y", $plus30days);

DEMO

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]