PHP: неверная разница меток времени - PullRequest
1 голос
/ 16 февраля 2011

Ситуация

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

Время начала: 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('d-m-Y h:i:s', $start_time) . '<br />' .
    '<b>End time:</b> ' . date('d-m-Y h:i:s', $end_time) . '<br />' .
    '<b>Time difference::</b> ' . date('h:i:s', $time_diff);

Результат

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

Проблема

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

Готов ли эксперт помочь?

Ответы [ 2 ]

6 голосов
/ 16 февраля 2011

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

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

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

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

0 голосов
/ 16 февраля 2011

Вы просите превратить 1970-01-01 07:16:22 во временную строку для отображения - будут различия, основанные на вашем часовом поясе.

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

...