Добавьте часы в формате G: i php - PullRequest
0 голосов
/ 12 февраля 2012

У меня есть список временных различий в формате G: i.

Я хотел бы добавить их все, но когда я пытаюсь сделать это, сбрасывается в 24 обратно в 0. Как я могу получить результат, например: 54:45?

Заранее спасибо.

date_default_timezone_set('UTC');
$username = $row['username'];
$begintime = $row['begintime'];
$endtime = $row['endtime'];

$begintime = new DateTime($begintime);
$begintime = $begintime->format('H:i');

$endtime = new DateTime($endtime);
$endtime = $endtime->format('H:i');

$difference = strtotime($endtime) - strtotime($begintime);
$difference = date('G:i', $total);  
$total_hours += $difference;  

Ответы [ 2 ]

1 голос
/ 12 февраля 2012

Не используйте date() для форматирования абсолютного времени. Поскольку $difference содержит разницу во времени в секундах, это просто вопрос простой арифметики:

$hours = floor( $difference / 60 / 60 );
$minutes = ( $difference / 60 ) % 60;

echo "$hours:$minutes";  
0 голосов
/ 12 февраля 2012

Вы можете на самом деле «обмануть» DateTime в создании абсолютного времени, добавив различия к произвольной дате:

$foo = new DateTime();
$bar = new DateTime();

foreach ($intervals as $interval) {
    $begin = $interval['begin'];
    $end = $interval['end'];
    $foo->add($begin->diff($end));
}

// Will be the total time of all intervals, as an interval itself
$total = $foo->diff($bar);
...