這篇文章主要介紹了PHP編程計算兩個時間段是否有交集的實現方法,結合具體執行個體形式對比分析了php時間段的轉換、比較等相關操作技巧,需要的朋友可以參考下
具體如下:
最佳化前的版本:
/** * PHP計算兩個時間段是否有交集(邊界重疊不算) * * @param string $beginTime1 開始時間1 * @param string $endTime1 結束時間1 * @param string $beginTime2 開始時間2 * @param string $endTime2 結束時間2 * @return bool */function is_time_cross($beginTime1 = '', $endTime1 = '', $beginTime2 = '', $endTime2 = '') { $status = $beginTime2 - $beginTime1; if ($status > 0) { $status2 = $beginTime2 - $endTime1; if ($status2 > 0) { return false; } elseif ($status2 < 0) { return true; } else { return false; } } elseif($status < 0) { $status2 = $endTime2 - $beginTime1; if ($status2 > 0) { return true; } else if ($status2 < 0) { return false; } else { return false; } } else { $status2 = $endTime2 - $beginTime1; if ($status2 == 0) { return false; } else { return true; } }}
最佳化後的版本(條件合并):
/** * PHP計算兩個時間段是否有交集(邊界重疊不算) * * @param string $beginTime1 開始時間1 * @param string $endTime1 結束時間1 * @param string $beginTime2 開始時間2 * @param string $endTime2 結束時間2 * @return bool */function is_time_cross($beginTime1 = '', $endTime1 = '', $beginTime2 = '', $endTime2 = '') { $status = $beginTime2 - $beginTime1; if ($status > 0) { $status2 = $beginTime2 - $endTime1; if ($status2 >= 0) { return false; } else { return true; } } else { $status2 = $endTime2 - $beginTime1; if ($status2 > 0) { return true; } else { return false; } }}
測試:
$beginTime1 = strtotime('2015-08-07 06:30');$endTime1 = strtotime('2015-08-07 08:30');$beginTime2 = strtotime('2015-08-07 05:30');$endTime2 = strtotime('2015-08-07 06:31');echo is_time_cross($beginTime1, $endTime1, $beginTime2, $endTime2);//輸出1
相關推薦:
PHP+MySQL對固定時間段內資料統計最佳化步驟詳解
PHP結合Redis來限制使用者或者IP某個時間段內訪問的次數
PHP如何?計算兩個時間段是否有交集