PHP 는 두 시간 대 사이 에 교 집합 된 일수 예제 를 계산 합 니 다.

쓸데없는 말 은 그만 하고,나 는 바로 코드 를 붙 일 게!

/**
 *               
 * @param $startDate1     1
 * @param $endDate1     1
 * @param $startDate2     2
 * @param $endDate2     2
 */
public function share_date_days($startDate1, $endDate1, $startDate2, $endDate2)
{
  $days = 0;
  $startDate1 = strtotime($startDate1);//     1
  $endDate1 = strtotime($endDate1);//     1
  $startDate2 = strtotime($startDate2);//     2
  $endDate2 = strtotime($endDate2);//     2
 
  /** ------------       ------start------ */
  //     1               ,   0
  if($endDate1 < $startDate2){
    $days = 0;
  }
  //     1               ,   0
  if($startDate1 > $endDate2){
    $days = 0;
  }
  //     1         2     ,   1
  if($endDate1 == $startDate2){
    $days = 1;
  }
  //     1         2     ,   1
  if($startDate2 == $endDate1){
    $days = 1;
  }
  /** ------------       ------end------ */
 
  /** ------------      ------start------ */
  //       1      2,     2          1
  if($startDate1 < $startDate2 && $endDate1 > $startDate2){
    //       1          2
    if($endDate1 <= $endDate2){
      $days = $this->diffBetweenTwoDays($startDate2, $endDate1) + 1;
    }
    //       1      2
    if($endDate1 > $endDate2){
      $days = $this->diffBetweenTwoDays($startDate2, $endDate2) + 1;
    }
  }
 
  //       1      2,     1      2
  if($startDate1 > $startDate2 && $startDate1 < $endDate2){
    //       1        2
    if($endDate1 <= $endDate2){
      $days = $this->diffBetweenTwoDays($startDate1, $endDate2) + 1;
    }
    //       1      2
    if($endDate1 > $endDate2){
      $days = $this->diffBetweenTwoDays($startDate1, $endDate2) + 1;
    }
  }
  //     1      2
  if($startDate1 == $startDate2){
    //     1        2
    if($endDate1 <= $endDate2){
      $days = $this->diffBetweenTwoDays($startDate1, $endDate1) + 1;
    }
    //     1      2
    if($endDate1 > $endDate2){
      $days = $this->diffBetweenTwoDays($startDate1, $endDate2) + 1;
    }
  }
  //     1      2
  if($endDate1 == $endDate2){
    //     1        2
    if($startDate1 <= $startDate2){
      $days = $this->diffBetweenTwoDays($startDate2, $endDate1) + 1;
    }
    //     1      2
    if($startDate1 > $startDate2){
      $days = $this->diffBetweenTwoDays($startDate1, $endDate1) + 1;
    }
 
  }
  //    1    2 
  if($startDate1 >= $startDate2 && $endDate1 <= $endDate2){
    $days = $this->diffBetweenTwoDays($startDate1, $endDate1) + 1;
  }
  //    1     2
  if($startDate1 < $startDate2 && $endDate1 > $endDate2){
    $days = $this->diffBetweenTwoDays($startDate2, $endDate2) + 1;
  }
  /** ------------      ------end------ */
 
  return $days;
}

/**
 *             
 * (  1970 1 1   ,           )
 * @param string $day1
 * @param string $day2
 * @return number
 */
function diffBetweenTwoDays($day1, $day2)
{
  if ($day1 < $day2) {
    $tmp = $day2;
    $day2 = $day1;
    $day1 = $tmp;
  }
  return ($day1 - $day2) / 86400;
}
이상 의 PHP 가 두 시간 동안 교 집합 된 일수 예 시 는 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 에 게 참고 가 되 고 많은 응원 을 바 랍 니 다.

좋은 웹페이지 즐겨찾기