Как лучше всего обрабатывать арифметику времени для приложения планирования? - PullRequest
1 голос
/ 01 ноября 2009

Я создаю приложение расписания автобусов.

В mysql db у меня есть поле 'time', которое является статическим - скажем, 15:23, которое является запланированным временем для автобуса и никогда не меняется от одного дня к следующему - автобус всегда приходит в 15:23. Сейчас 3:20 вечера, и пользователь бежит к автобусной остановке. Как представить пользователю сообщение «Следующий автобус через 3 минуты»

Заранее спасибо! Chris

Ответы [ 3 ]

2 голосов
/ 01 ноября 2009

Вы также можете сделать это на 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 ().

0 голосов
/ 02 ноября 2009

будьте осторожны, когда ваш расчет идет за полночь, например, если это 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";
0 голосов
/ 01 ноября 2009

В MySQL вы можете использовать функцию TIMEDIFF и функцию CURTIME, чтобы сделать это:

TIMEDIFF(bus_time, CURTIME())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...