3

我正在尝试检查 MySQL 存储的日期时间对象是否在现在的 2 小时内,并且仅根据当前时间的未来 2 小时的ride_hour 是否显示某些链接。这是我尝试过的:

$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;

所以我先比较一天,看看今天是否发生了,如果是,我不需要检查时间。否则,我会尝试将 $ride_hour 与 $now_hour 进行比较。这一天显然在工作,但小时比较似乎不起作用。

我想做的另一件事是在 cakePHP 控制器中,根据排序值限制结果。我试图将结果限制为 ALL、具有未来日期的结果或过去的结果,然后分页。这是我正在尝试的方法,但它不起作用:

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);

谢谢!

4

1 回答 1

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

于 2012-04-14T15:30:55.447 回答