[英]Detect overlapping time ranges in PHP
我想查看時間范圍是否重疊,如果重疊,則應返回true,否則返回false。 如果我選擇了這個時間范圍:
10:30:00-11:30:00
那么我需要檢查它是否與另一個時間范圍不重疊。 例如:
10:30:00-11:30:00與10: 30: 00-12:30:00重疊,因此我必須禁用廣告位,但我不知道如何正確進行比較。
我具有以下功能,但我認為它無法正常運行。
$as = $selectedSlot['slot_start'];
$ae = $selectedSlot['slot_end'];
$bs = $DB_slots['slot_start'];
$be = $DB_slots['slot_end'];
function checkSlotRange($as,$ae,$bs,$be){
$as = strtotime($as);
$ae = strtotime($ae);
$bs = strtotime($bs);
$be = strtotime($be);
if($as <= $bs && $ae <= $be){
return true;
}else{
return false;
}
}
您檢查時間的邏輯錯誤。 您需要檢查A的開始時間是否晚於B的開始時間,並且A的結束時間早於B的結束時間。
<?php
function checkSlotRange($as,$ae,$bs,$be){
$as = strtotime($as);
$ae = strtotime($ae);
$bs = strtotime($bs);
$be = strtotime($be);
return ($as >= $bs && $ae <= $be);
}
var_dump(checkSlotRange("10:30", "11:30", "09:30", "12:30")); // true
var_dump(checkSlotRange("10:30", "11:30", "11:40", "12:30")); // false
我不知道您的時間范圍是否超過午夜,但如果確實如此,則需要將時間添加到時間戳中以進行比較,否則會得到意外的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.