如何从给定日期删除日期集并使用php返回开始和结束日期

时间:2016-02-18 11:18:14

标签: php

我的原始日期开始于2013年1月1日结束2016年2月18日,我想删除2015年3月25日至2015年10月15日,然后我的输出开始于2013年1月1日结束时间为2014年3月24日,并开始2014年10月16日结束时间是2016年2月18日< / p>

1 个答案:

答案 0 :(得分:0)

$dateArr = array();
$arr_1   = array();
$arr_2   = array();
$begin   = new DateTime('2013-01-01 00:00:00');
$end     = new DateTime('2016-02-18 23:59:59');
$daterange  = new DatePeriod($begin, new DateInterval('P1D'), $end);
foreach($daterange as $date){
   $arr_1[]=  $date->format("Y-m-d");
}
$condidateStart = new DateTime('2014-03-25 00:00:00');
$condidateEnd   = new DateTime('2014-10-15 23:59:59');
$daterange1    = new DatePeriod($condidateStart, new DateInterval('P1D'), $condidateEnd);
foreach($daterange1 as $date){
  $arr_2[] =  $date->format("Y-m-d");
}
$i=0;
$j=0;
$arrcount =  count($arr_1);
for ($m=0;$m<$arrcount;$m++) {
  if(in_array($arr_1[$m],$arr_2)) {
   if($i == 1) {
 $myDateArr[$j]['end'] = $arr_1[$m-1];
 $j = $j+1;
 $i=0;  
     $dateArr="";
   }        
 } 
else {
if($i == 0 || $m == $arrcount-1) { 
 if($m == $arrcount-1) { 
  $myDateArr[$j]['end'] = $arr_1[$m];
$j = $j+1;
 } 
else  {
  $myDateArr[$j]['start'] = $arr_1[$m]; 
$i=1; 
}
   $dateArr=""; 
 }
 }      
 }
echo"<pre>";print_r($myDateArr);