我有一個用戶輸入表格,其中用戶以(YYYY-mm-dd)格式選擇日期,並以(H:i)開始時間並以(H:i)格式結束時間,或者假設我有三個變量,以下值。我如何檢測兩個時間段的不重疊?
$date = '2012-11-22';
$startTime = '1:00';
$endTime = '4:00';
我現在必須將這個值與現有的值數組進行比較。我現有的陣列看起來像這樣。
Array
(
[0] => Array
(
[id] => 1
[start_datetime] => 2012-11-22 02:30:00
[end_datetime] => 2012-11-22 05:00:00
)
[1] => Array
(
[id] => 2
[start_datetime] => 2012-11-22 00:00:00
[end_datetime] => 2012-11-22 02:30:00
)
[2] => Array
(
[id] => 3
[start_datetime] => 2012-11-22 05:00:00
[end_datetime] => 2012-11-22 08:00:00
)
[3] => Array
(
[id] => 4
[start_datetime] => 2012-11-22 08:00:00
[end_datetime] => 2012-11-22 11:00:00
)
[4] => Array
(
[id] => 5
[start_datetime] => 2012-11-22 11:00:00
[end_datetime] => 2012-11-22 17:00:00
)
)
我必須檢查用戶輸入選擇[日期,開始時間,和endTime]具有任何時隙的給定陣列中已經預定的時隙。從我看到的解決方案是首先拆分並匹配日期,如果匹配日期那麼時間需要相應匹配。我很困惑如何去與它。我希望從你們那裏得到一些簡單的解決方案:)
謝謝。
更新: 我試過這樣做。
$arenaSurfaceBooking = array(
array(
'id' => 1,
'start_datetime' => '2012-11-22 02:30:00',
'end_datetime' => '2012-11-22 05:00:00',
),
array(
'id' => 2,
'start_datetime' => '2012-11-22 00:00:00',
'end_datetime' => '2012-11-22 02:30:00',
),
array(
'id' => 3,
'start_datetime' => '2012-11-22 05:00:00',
'end_datetime' => '2012-11-22 08:00:00',
),
array(
'id' => 4,
'start_datetime' => '2012-11-22 08:00:00',
'end_datetime' => '2012-11-22 11:00:00',
),
array(
'id' => 5,
'start_datetime' => '2012-11-22 11:00:00',
'end_datetime' => '2012-11-22 17:00:00',
)
);
foreach($arenaSurfaceBooking as $booking) {
$bookedDateTimestamp = strtotime(date('Y-m-d', strtotime($booking['start_datetime'])));
$inputDateTimestamp = strtotime($context['date']);
$bookedStartTime = strtotime(date('H:i', strtotime($booking['start_datetime'])));
$bookedEndTime = strtotime(date('H:i', strtotime($booking['end_datetime'])));
$userStartTime = strtotime(date('H:i', strtotime($context['start_datetime'])));
$userEndTime = strtotime(date('H:i', strtotime($context['end_datetime'])));
if($bookedDateTimestamp == $inputDateTimestamp) {
if($userEndTime <= $bookedStartTime || $userStartTime >= $bookedEndTime) {
echo 'i am booked';
}
}
}
它不工作。
我希望我沒有複雜的問題,如果你不明白,請讓我知道虐待嘗試以更好的方式解釋它。 –
什麼/您是如何嘗試的? – Leri
@PLB我試着分開日期並首先比較日期。我很困惑我應該如何比較時間。 –