过去的时间预定巴士无法显示

时间:2016-06-07 08:00:03

标签: php mysql date

我正在做一个公共汽车预订系统。这是我的公交时刻表:

structure of bus schedule

在这里你可以看到第1行(route_id = 1)的出发时间是下午12点15分。现在,在我的网站上,第一个表格是选择地点和预订日期。选择日期和地点后,第二个表格将显示可用的公交车。这是我的概念。

现在我选择'科伦坡'和'贾夫那'(根据表格排第一行),日期是2016-06-09。 (今天的日期:2016-06-7,当我选择这个,我的时间是晚上12点20分)在第一个表格。

在第二种形式中,可用的总线没有出现。

我做了一个小验证:

(这里$ booked_date是第一种形式的选择日期,$ off是根据表格的公共汽车时间)

if ($booked_date >= date(“Y-m-d”) && ($departure > date('H:i:s'))) {
    // show the bus
}

我的问题是,如果我选择2016-06-07(今天的日期和选择日期的时间是晚上12点20分),公共汽车将不会显示,因为出发时间是12.15pm。时间过去了。所以巴士不会显示。

但是当我选择2016-06-09(今天2天的日期和选择日期的时间是下午12点20分)时,这辆公共汽车必须显示。但这里没有显示。如何设置此验证。

我不想要过去时间的预定巴士。怎么做?

2 个答案:

答案 0 :(得分:1)

您当前if的问题在于,无论$booked_date是什么,如果$departure在当前时间之前,它将不会显示总线。你需要单独处理它们。这样的事情可能有用:

$curDate = date('Y-m-d');
if($booked_date > $curDate || ($booked_date == $curDate && $departure > date('H:i:s'))) {
    // show the bus
}  

答案 1 :(得分:1)

正如@ImClarky指出你的逻辑错了。更好的选择是以秒为单位比较时间:

$curTime = time();
$bookedTime = strtotime($booked_date.' '.$departure);
if($bookedTime > $curTime) {
   // show the bus
}