Определение прошедшего времени - PullRequest
1 голос
/ 10 сентября 2009

У меня есть два раза в PHP, и я хотел бы определить истекшие часы и минуты. Например:

8: 30 до 10:00 будет 1: 30

Ответы [ 5 ]

3 голосов
/ 10 сентября 2009

Решением может быть использование strtotime для преобразования ваших дат / времени в метки времени:

$first_str = '8:30';
$first_ts = strtotime($first_str);

$second_str = '10:00';
$second_ts = strtotime($second_str);

А затем сделайте разницу:

$difference_seconds = abs($second_ts - $first_ts);

И получите результат в минутах или часах:

$difference_minutes = $difference_seconds / 60;
$difference_hours = $difference_minutes / 60;
var_dump($difference_minutes, $difference_hours);

Вы получите:

int 90
float 1.5

Теперь вам нужно выяснить, как это отобразить; -)


(изменить, подумав немного больше)

Можно отобразить разницу, используя функцию date ; что-то вроде этого должно сделать:

date_default_timezone_set('UTC');

$date = date('H:i', $difference_seconds);
var_dump($date);

И я получаю:

string '01:30' (length=5)

Обратите внимание, что в моей системе мне пришлось использовать date_default_timezone_set, чтобы установить часовой пояс в формате UTC, иначе я получал "02:30" вместо "01:30" - - вероятно, потому что я во Франции, а FR - это язык моей системы ...

1 голос
/ 10 сентября 2009

Вы можете использовать ответ на этот вопрос , чтобы преобразовать ваши времена в целочисленные значения, а затем выполнить вычитание. Оттуда вы захотите преобразовать этот результат в единицы-часы-минуты, но это не должно быть слишком сложно.

0 голосов
/ 10 сентября 2009
$d1=date_create()->setTime(8, 30);
$d2=date_create()->setTime(10, 00);
echo $d1->diff($d2)->format("%H:%i:%s");

Выше используются новые (ish) классы DateTime и DateInterval. Основными преимуществами этих классов является то, что даты вне эпохи Unix больше не являются проблемой, а летнее время, високосные годы и различные другие странные моменты обрабатываются.

0 голосов
/ 10 сентября 2009
$time1='08:30';
$time2='10:00';
list($h1,$m1) = explode(':', $time1);
list($h2,$m2) = explode(':', $time2);
$time_diff = abs(($h1*60+$m1)-($h2*60+$m2));
$time_diff = floor($time_diff/60).':'.floor($time_diff%60);
echo $time_diff;
0 голосов
/ 10 сентября 2009

Используйте php timestamp для работы:

echo date("H:i:s", ($end_timestamp - $start_timestamp));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...