php函数,用于计算30天,但不包括周末或假日

php函数,用于计算30天,但不包括周末或假日,php,function,date,calculator,days,Php,Function,Date,Calculator,Days,我需要帮助 我需要创建php函数计数30天。但如果最后一天是周末或假日。因此,我必须添加天数,以便最后一天是工作日。30天不能在周末或假日结束。我搜索了论坛和谷歌,但什么也没找到。我发现工作日很重要,但不是我所需要的。谢谢你的帮助 $holiday = array( '01-01', '01-06', '03-30', '04-01', '04-02',

我需要帮助

我需要创建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);
$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=strottime($row['prijem'])//今天的例子是2016-03-25

而($count不需要循环,因为你只关心第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);

您需要自己尝试解决问题。如果您还没有这样做,现在就应该这样做。如果有,请包括您尝试的代码,解释预期结果和实际结果,包括任何错误。获取今天的日期部分(月、日、年),并通过
mktime()创建新的时间戳
并在当天添加30。检查星期六/星期日当天的星期几(然后根据联邦或宗教节日等进行暴力检查,如果需要-有此API…)如果生成的日期不是工作日,请添加一天,然后再次检查。它可以工作。你知道具体的API吗?或者我可以在互联网上找到它。确实如此。删除我的,你是更快的打字员:)