Php 将总时间转换为秒

Php 将总时间转换为秒,php,datetime,Php,Datetime,我就这样把时间加起来了 $totalTimeDiff = new DateTime("@0"); foreach($dbrecords as $row) { $timeDiff = date_diff( ... two datetimes from my database ... ) $totalTimeDiff->add($timeDiff); } 因此,$totalTimeDiff是一个日期时间对象,所有时间差之和加在一起(所有持续时间之和)。如何以秒为单位计算总时间

我就这样把时间加起来了

$totalTimeDiff = new DateTime("@0");
foreach($dbrecords as $row)
{
    $timeDiff = date_diff( ... two datetimes from my database ... )
    $totalTimeDiff->add($timeDiff);
}

因此,
$totalTimeDiff
是一个日期时间对象,所有时间差之和加在一起(所有持续时间之和)。如何以秒为单位计算总时间?

为什么不简单一点

$totalseconds=0;
foreach($dbrecords as $row)
  $totalseconds+=(UNIX_TIMESTAMP(second_datetime)-UNIX_TIMESTAMP(first_datetime));
使用strotime函数


echo标准时间('01:00:00')-标准时间('TODAY')

根据moonwave99的建议,我使用了DateInterval(不记得为什么我首先使用DateTime,可能是项目另一个阶段的解决方法),并在将其转换为秒(将小时和分钟转换为秒,并将其相加)后,将每个值添加到总数中,从而计算秒数。我是通过使用seconds属性以及以下函数将DateInterval转换为秒来实现这一点的(注意:对于我的特定情况,只考虑了天、小时、分钟和秒,因为金额不可能超过一个月):


1.使用
DateInterval
,因为您正在计算适当的时间间隔,而不是存储日期;2.阅读它的文档,以获得以秒为单位的时间间隔。如果我使用date_diff来获得差异,如何将其转换为秒?我在文档中没有看到这一点。我只是想看看如何从那里检索秒数。只要数据库中的值是相对于UTC保存的,这就行了。如果存储本地值(希望不是),则必须考虑时区和DST,这要困难得多。由于我们计算了差异,只要两者都具有相同的时间偏移量,则时间偏移量就会增量。如果一个值在转换之前,另一个值在转换之后,则它们可能不一定相同。如果是这种情况,然后很多事情都会中断:结束时间可能早于开始时间。除此之外,UNIX_TIMESTAMP()函数将重新设置为UTC。
$totalTimeDiff->format('U');
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;
}