0

我目前有一个 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;  
4

2 回答 2

1

不要date()用来格式化绝对时间。由于$difference包含以秒为单位的时间差,这只是一个简单的算术问题:

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

echo "$hours:$minutes";  
于 2012-02-12T13:52:46.510 回答
0

您实际上可以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);
于 2012-02-12T14:15:01.137 回答