2009-11-30 67 views
0

我有兩次start_time = 2009-12-01 9.30 pm和end_time = 2009-12-01 11.30 pm(YYYY-MM-DD)。如果用戶在這些時間之間做任何活動,即2009-12-01 10.30下午我需要告訴他你是不是有效做這個活動... 這兩次2009-12-01 9.30 pm和2009-12-01 11.30 pm是從數據庫中提取的。時間2009-12-01 10.30是由用戶給出。找出兩個時隙之間的時間?

我的問題是如何找到晚上10點半發生是晚上9:30其間至晚上11:30時...

我做我的節目在PHP

回答

1

使用strtotime()到字符串轉換成Unix秒。然後,一個簡單的

if ($time1 < strtotime(10:30...) && strtotime(10:30...) < $time 2) 
{ 
    //do your stuff; 
} 
+0

是否它正確的時間你已經檢查它爲< – svk

1
$start = strtotime($start_time); 
$end = strtotime($end_time); 
$user = strtotime($user_time); 

if($user > $start && $user < $end) die('You are not allowed'); 
0

轉換 「2009-12-01 9時30分」 和 「2009-12-01 11點30分」 到UNIX時間戳,然後用<比較這些:

if ($start <= $event && $event < $end) 
    complain(); 
} else { 
    proceed(); 
} 
+0

沒有PHP已經有一個適當的DateTime類? – Joey

+0

我想你失去了這個:'{' –

+0

我認爲它只適用於PHP版本大於或等於5.3 – AntonioCS

1

您可以使用數據庫查詢或PHP。在PHP:

$timeStart = strtotime('2009-12-01 11.30'); 
$timeEnd = strtotime('2009-12-01 09.30'); 
$time = strtotime('2009-12-01 10.30'); 

if($time > $timeStart && $time < $timeEnd) { 
    echo "Between given times."; 
} 
0

有沒有必要做任何過多的PHP處理時,你可以簡單地使用SQL查詢:如果用戶活動

SELECT 1 FROM your_table_name WHERE '2009-12-01 10:30:00' BETWEEN start_time AND end_time; 

這將返回1個或更多個結果發生在數據庫內的任何開始和結束時間之間。請注意,您應在表格中爲(start_time,end_time)指定最左側的前綴索引。

只需檢查您的查詢結果。如果您的行數大於或等於1,則您知道用戶活動在數據庫中的開始和結束時間之間。

相關問題