2012-04-14 38 views
3

我想檢查MySQL存儲的datetime對象是否在2小時之內,並且只顯示某些鏈接,或者基於如果ride_hour在當前小時的將來超過2小時。以下是我已經試過:PHP/CakePHP datetime compare

$now = date('Y-m-d'); 
$now_hour = date('h'); 
$ride_date = date('Y-m-d',strtotime($ride['Ride']['date'])); 
$full_ride_hour = date('h',strtotime($ride['Ride']['date'])); 
$ride_hour = $full_ride_hour-2; 

所以我比較第一天,看它是否是即使在今天happing,如果是這樣我不需要檢查小時。否則,我試圖比較$ ride_hour和$ now_hour。這一天顯然工作,但小時比較似乎沒有工作。

我想要做的另一件事是在cakePHP控制器中,是基於排序值限制結果。我試圖將結果限制爲「全部」,「未來日期的結果」或「過去的結果」以及分頁。以下是我如何嘗試哪些方法無效:

switch ($sort) { 
case 0: 
$rides = $this->paginate('Ride',array('Ride.user_id' => $user_id,'Ride.date > now()')); 
break; 

case 1: 
$rides = $this->paginate('Ride',array('Ride.user_id' => $user_id)); 
break; 

case 2: 
$rides = $this->paginate('Ride',array('Ride.user_id' => $user_id,'Ride.date < now()')); 
break; 
} 

$this->set('sort',$sort); 
$this->set('rides', $rides); 

謝謝!

+0

有一個日期間'和日期的差異( 'H',...)''( 'H',...)'。即「h」是1-12,而「H」是0-23。 – searlea 2012-04-14 15:43:12

回答

4

這對於PHP中的DateTime功能來說會容易得多。我不確定「2小時內」是什麼意思。我假設你的意思是在2小時之前和2小時之後。如果不是,你可以很容易地改變間隔。

$mysql_date_obj = new DateTime($date_from_mysql); 
$before_time = new DateTime('now'); 
$before_time->add(DateInterval::createFromDateString('-2 hour')); 
$after_time = new DateTime('now'); 
$after_time->add(DateInterval::createFromDateString('2 hour')); 

if($before_time <= $mysql_date_obj && $mysql_date_obj <= $after_time) { 
    // date is within 2 hours. 
} 

文檔:http://php.net/DateTime

+0

謝謝!工作得很好,我試圖使用該對象,並得到了500錯誤,但它現在工作,非常感謝。 – Michael 2012-04-14 15:46:22