我总是像这样累计时间。
$totalTimeDiff = new DateTime("@0");
foreach($dbrecords as $row)
{
$timeDiff = date_diff( ... two datetimes from my database ... )
$totalTimeDiff->add($timeDiff);
}
所以$totalTimeDiff
是一个DateTime对象,其中所有时间差的总和加在一起(因此是所有持续时间的总和)。如何以秒为单位获得总时间?
答案 0 :(得分:0)
为什么不保持简单?
$totalseconds=0;
foreach($dbrecords as $row)
$totalseconds+=(UNIX_TIMESTAMP(second_datetime)-UNIX_TIMESTAMP(first_datetime));
答案 1 :(得分:0)
使用strtotime功能
echo strtotime('01:00:00') - strtotime('TODAY');
答案 2 :(得分:0)
$totalTimeDiff->format('U');
答案 3 :(得分:0)
考虑到moonwave99的建议,我使用了DateInterval(不记得为什么我首先使用DateTime,可能是在项目的另一个阶段的某些事情的解决方法)并通过将每个值添加到总计来计算秒数将它转换为秒后(将小时和分钟转换为秒并将它们相加)。我这样做是通过使用DateInterval class's秒属性以及以下函数将DateInterval转换为秒(注意:仅考虑我的特定情况的天,小时,分钟和秒,因为这个数量不可能超过一个月):
function convertDateIntervalToSeconds($dateInterval)
{
$days = $dateInterval->d * 24 * 60 * 60;
$hours = $dateInterval->h * 60 * 60;
$minutes = $dateInterval->i * 60;
$seconds = $dateInterval->s;
return $hours + $minutes + $seconds;
}