如何最好地处理调度应用程序的时间算术?

时间:2009-11-01 18:44:04

标签: php time comparison

我正在建立一个公交计划应用程序。

在mysql数据库中,我有一个静态的“时间”字段 - 让我们说15:23这是公交车的预定时间,从不改变从一天到下一天 - 公交车总是在15:23到达。现在是下午3:20,用户正在为公共汽车站运行。如何向用户显示“下一班车在3分钟内”

提前致谢!克里斯

3 个答案:

答案 0 :(得分:2)

您也可以在PHP中执行此操作:

// set this to the appropriate time zone if mktime gives a warning
date_default_timezone_set("America/Los_Angeles");

$bus = mktime(11, 0); // hour : minute; other fields default to now
$now = time();
echo (($bus - $now) / 60) . " minutes to go\n";

如果您从MySQL而不是time()获得时间,请使用MySQL的UNIX_TIMESTAMP()函数。

答案 1 :(得分:0)

在MySQL中,您可以使用TIMEDIFF函数和CURTIME函数来执行此操作:

TIMEDIFF(bus_time, CURTIME())

答案 2 :(得分:0)

当你的计算超过午夜时要小心,例如,如果它是23:20而公共汽车是在0:05,则简单的减法将不起作用。始终确保预定时间晚于当前时间,例如

$now = time();
$sched = "00:43";

$sched_time = strtotime($sched);
if($sched_time < $now)
     $sched_time = strtotime("tomorrow $sched");

$diff =  $sched_time - $now;
echo "$diff seconds to go";