Мне нужна помощь.
Мне нужно создать функцию 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. И снова, если бы это был выходной, добавьте больше дней в рабочий день.
Нет необходимости в этом цикле, так как вам важно только, если 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);
Других решений пока нет …