如何判斷兩個時間段是否有重疊部分


分別用 startDate1,endDate1 和 startDate2,endDate2 表示兩段時間
如果考慮寫出兩個時間段重疊的每種情況的話,會比較多,寫出的判斷也比較長,可以反過來考慮如果判斷兩段時間不重疊的情況。
考慮一段時間不動,另一段時間不重疊的話,另一段時間只能在不動的時間段的一前一后。

這里假設不動的藍色塊時間段為 startDate2,endDate2 
很容易寫出不重疊的判斷:
endDate1 < startDate2 || endDate2 < startDate1
這時再取反就為重疊的條件
!(endDate1 < startDate2 || endDate2 < startDate1)
即為:
endDate1 >= startDate2 && endDate2 >= startDate1
 
        

這里可以用 PHP 封裝成方法,因為PHP可以直接比較時間大小所以不用轉成時間戳比較了。

當然傳進來的時間參數需要是正確的時間格式。

function isOverlap($startDate1, $endDate1, $startDate2, $endDate2)
{
    return $endDate1 >= $startDate2 && $startDate1 <= $endDate2;
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM