【问题标题】:How best to handle time arithmetic for a scheduling app?如何最好地处理调度应用程序的时间算术?
【发布时间】:2009-11-01 18:44:03
【问题描述】:

我正在构建一个公交时刻表应用程序。

在 mysql 数据库中,我有一个静态的“时间”字段 - 比如说 15:23,这是公共汽车的预定时间,并且从一天到下一天都不会改变 - 公共汽车总是在 15:23 来。现在是下午 3:20,用户正在向公交车站跑去。如何向用户显示“下一班车在 3 分钟后”

提前致谢!克里斯

【问题讨论】:

  • “时间”字段的类型是什么?您是想了解整个查询,还是想知道如何比较时间?
  • 哦,是的,我正在使用 php - 抱歉
  • 我可以做查询,只是似乎可以比较查询结果和现在的时间。类型是“时间”。

标签: php time comparison


【解决方案1】:

你也可以用 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() 函数。

【讨论】:

    【解决方案2】:

    当您的计算超过午夜时要小心,例如,如果现在是 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";
    

    【讨论】:

      【解决方案3】:

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

      TIMEDIFF(bus_time, CURTIME())
      

      【讨论】:

        猜你喜欢
        • 2016-10-14
        • 2013-06-13
        • 2010-10-04
        • 1970-01-01
        • 2021-06-16
        • 2016-07-05
        • 1970-01-01
        • 2012-08-09
        • 1970-01-01
        相关资源
        最近更新 更多