PHP/蛋糕PHP日期时间比较


PHP / CakePHP datetime compare

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

$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 控制器中,是根据排序值限制结果。我试图将结果限制为"全部"、具有未来日期的结果或过去的结果,然后分页。这是我尝试不起作用的方法:

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

谢谢!

使用 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