PHP: неправильная временная разница

Ситуация

У меня две метки времени.

Один с временем начала и один с временем окончания.

Время начала: 04:43:37
Время окончания: 11:59:59

Теперь я пытаюсь получить разницу между такими датами:

//define timestamps $start_time = 1297698217; $end_time = 1297724399; $time_diff = $end_time - $start_time; //display times and difference echo '<b>Start time:</b> ' . date('dmY h:i:s', $start_time) . '<br />' . '<b>End time:</b> ' . date('dmY h:i:s', $end_time) . '<br />' . '<b>Time difference::</b> ' . date('h:i:s', $time_diff); 

Результат

 Start time: 14-02-2011 04:43:37 End time: 14-02-2011 11:59:59 Time difference: 08:16:22 

Проблема

Теперь проблема в том, что результат должен быть 07:16:22. Я пробовал это в разное время, но каждый раз, когда я получаю тот же результат. Один час слишком большой разницы.

Есть ли специалист, желающий помочь?

Solutions Collecting From Web of "PHP: неправильная временная разница"

Последний должен быть gmdate вместо date :

 '<b>Time difference::</b> ' . gmdate('h:i:s', $time_diff); 

date настраивается для вашей текущей локали, которая, как представляется, равна GMT + 1. gmdate не выполняет эту настройку.

Я предполагаю, что вы планируете использовать это только для временных разниц менее 24 часов.

Вы просите, чтобы в строке времени отображалось отображение времени – в зависимости от вашего часового пояса будут различия.

Чтобы сделать его GMT GMT, используйте gmdate (), но это все равно вызовет проблемы, когда разница во времени получит> 24 часа.