如何添加日期+ 6个月但使用PHP排除星期日

时间:2017-05-05 06:22:39

标签: php

我正在创建一个调度程序脚本,如果我今天执行任务,我的下一个任务将是从今天开始的6个月(半年度),但我的问题是人们星期日没有活动所以必须在星期一进行调整。

如何添加6个月到今天的日期,但不包括星期日,我使用PHP并且到目前为止能够使用以下代码添加6个月。

我的代码就是这个。

<?php echo  date('Y-m-d', strtotime('+6 months'));?>

3 个答案:

答案 0 :(得分:0)

以下是答案:https://stackoverflow.com/a/12365635/6557808 提供的不仅仅是你要求的,而且很清楚。

答案 1 :(得分:0)

这是一个小功能。只是传递和结束日期

   <?php

        function number_of_working_days($from, $to) {
            $workingDays = [1, 2, 3, 4, 5, 6]; # date format = N (1 = Monday, ...)

            $from = new DateTime($from);
            $to = new DateTime($to);
            $to->modify('+1 day');
            $interval = new DateInterval('P1D');
            $periods = new DatePeriod($from, $interval, $to);

            $days = 0;
            foreach ($periods as $period) {
                if (!in_array($period->format('N'), $workingDays)) continue;
                $days++;
            }
            return $days;
        }

echo number_of_working_days('2017-05-06', '2017-05-08');


         ?>

答案 2 :(得分:0)

完整答案在这里: -

function daysToAdd($startDate,$endDate)
{
$count=0;
While($startDate!=$endDate){
$lpcnt=0;
$begin = new DateTime($startDate);
$end = new DateTime($endDate);
$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($begin, $interval, $end);
foreach ( $period as $dt ){
  if($dt->format( "l" )=='Sunday'){
      $count++;
      $lpcnt++;
  }
}
$day = date('D', strtotime($endDate));
if($day=='Sun'){
    $count=$count+1;
    $lpcnt=$lpcnt+1;
}
$startDate=date('Y-m-d', strtotime($endDate . ' +1 day'));
$endDate=date('Y-m-d', strtotime($endDate . ' +'.$lpcnt.' day'));
if($startDate!=$endDate){
   daysToAdd($startDate,$endDate);
}else{
   if(date('D', strtotime($startDate))=='Sun') {
       $count=$count+1;
       break;
   }
}
}
return $count;
}
$currentDate=date('Y-m-d');
$postSixMonth=date('Y-m-d', strtotime("+5 months"));
$daysToadd=daysToAdd($currentDate,$postSixMonth);
$requiredDate=date('Y-m-d', strtotime($postSixMonth . ' +'.$daysToadd.' days'));
echo $requiredDate;exit;