php 计算 30 天但没有结束周或假期的功能

php function on counting 30 days but no end week or holiday

我需要帮助。

我需要在 30 天后创建 php 函数。但如果最后一天是周末或节假日。所以我必须添加天数,以便最后一天是工作日。 30 天不能在周末或 holiday.I 搜索论坛和 google,但我没有找到任何东西。我发现工作日很重要,但不是我需要的。感谢您的帮助。

          $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);

DEMO