2014-01-29 41 views
0

我正在總計時間如此。將總時間轉換爲秒

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

所以$totalTimeDiff是與所有的加在一起的時間差的總和(所以所有的持續時間的總和)DateTime對象。我怎樣才能在幾秒鐘內獲得總時間?

+0

1.使用'DateInterval',因爲你正在計算一個合適的間隔並且不存儲日期; 2.閱讀它的文檔,以便在幾秒鐘內獲得你的間隔。 – moonwave99

+0

如果我使用date_diff來獲得差異,那我該如何將它轉換爲秒?我沒有在文檔中看到。我只是看到如何從那裏檢索秒。 – muttley91

+0

[只需計算與_now_的區別](http://stackoverflow.com/questions/3176609/calculate-total-seconds-in-php-dateinterval)。 – moonwave99

回答

0

爲什麼不簡單?

$totalseconds=0; 
foreach($dbrecords as $row) 
    $totalseconds+=(UNIX_TIMESTAMP(second_datetime)-UNIX_TIMESTAMP(first_datetime)); 
+0

只要數據庫中的值與UTC保存在一起,就會工作。如果存儲本地值(希望不是),那麼您必須考慮時區和DST,這更困難。 –

+0

由於我們計算差異,只要兩者具有相同的值,時間偏移就會增加。 –

+0

是的,但如果一個值在轉換之前,另一個值在之後,它們可能不一定相同。 –

0

使用的strtotime功能

回波的strtotime('01:00:00 ') - 的strtotime(' 今天「);

0
$totalTimeDiff->format('U'); 
0

以moonwave99的建議下,我用DateInterval(不記得爲什麼我有日期時間去了,在第一個地方,可能在該項目的另一個階段的東西一種變通方法),並通過將每個計算的秒在將其轉換爲秒(將小時和分鐘轉換爲秒並將其總和)之後,將該值轉換爲總值。我通過使用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; 
}