主頁 > 知識庫 > PHP 計算兩個時間段之間交集的天數示例

PHP 計算兩個時間段之間交集的天數示例

熱門標簽:欣思維地圖標注 高德地圖標注位置怎么標注 電銷機器人沒有效果怎么樣 高德地圖標注店鋪收費嗎 杭州語音電銷機器人 江門回撥外呼系統(tǒng) 江西電銷機器人收費 天潤融通外呼系統(tǒng)好嗎 泊頭在哪里辦理400電話

廢話不多說,我就直接上代碼吧!

/**
 * 計算兩個時間段之間交集的天數
 * @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 計算兩個時間段之間交集的天數示例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • php計算兩個日期相差天數的方法
  • php 計算兩個時間相差的天數、小時數、分鐘數、秒數詳解及實例代碼
  • PHP編程計算日期間隔天數的方法
  • php獲取給定日期相差天數的方法分析

標簽:大同 江門 石嘴山 平涼 內江 雙鴨山 深圳 駐馬店

巨人網絡通訊聲明:本文標題《PHP 計算兩個時間段之間交集的天數示例》,本文關鍵詞  PHP,計算,兩個,時間段,之間,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP 計算兩個時間段之間交集的天數示例》相關的同類信息!
  • 本頁收集關于PHP 計算兩個時間段之間交集的天數示例的相關信息資訊供網民參考!
  • 推薦文章