2012-07-04 116 views
1

我想在php中添加時間,但經過幾個小時的google'ing並嘗試我仍然無法找到解決方案。在php中添加時間

我的價值觀是:

$newTotal = '00:45:00'; 
$oldTotal = '00:16:00'; 

我想補充這兩個了,這使得1時01分00秒。

你能給我一個例子,我真的很絕望! :P

在此先感謝,

回答

1

保持最小錯誤的開始日期。

<?php 
$origin = '00:00:00'; 
$newTotal = '00:45:00'; 
$oldTotal = '00:16:00'; 

$added = strtotime($newTotal) + (strtotime($oldTotal) - strtotime($origin)); 

echo date('H:i:s', $added); 

輸出:

01:01:00 

注意,如果你的時間超過23:59:59加入後,你會得到錯誤的結果。

+0

感謝這實際上爲我工作! – Ziras

+0

它也可以添加日期嗎?所以當它過去的24小時它增加了一天? – Ziras

2

如果這些值總是看起來像,你可以打破他們用SUBSTR()

$hours1 = substr($newTotal, 0, 2); 

等,然後簡單地加起來秒,做一個分而治之,泡個時間,瞧!

$secondstotal = $seconds1+$seconds2; 
$restseconds = $secondstotal % 60; 
$minutesfromseconds = floor($restseconds/60); 

$minutestotal = $minutes1+$minutes2+$minutesfromseconds; 

3

使用strtotime()把它們變成Unix的時間戳,然後將其添加爲整數:

$newTotal = '00:45:00'; 
$oldTotal = '00:16:00'; 

$total = strtotime($newTotal) + strtotime($oldTotal); 

要重新格式化爲hh:mm:ss,使用date()

echo date('H:i:s', $total); 

這給出:

1時01分00秒

+0

做你拼命地跑這個腳本? –

+0

我試過這個,但輸出給我22:01:00 – Ziras

+0

@Tufan是的,我做到了。你自己試過了嗎?這對我來說可以。 – Bojangles

1

無時間函數另一種解決方案:

function sumtotal($a,$b) { 
    $i = explode(':',$a); 
    $j = explode(':',$b); // 0hh:1mm:2ss 
    $k = array(0,0,0,0); // 0days:1hours:2minutes:3seconds 
    $k[3] = $i[2]+$j[2]; 
    $k[2] = (int)($k[3]/60)+$i[1]+$j[1]; 
    $k[1] = (int)($k[2]/60)+$i[0]+$j[0]; 
    $k[0] = (int)($k[1]/24); 
    $k[3] %= 60; 
    $k[2] %= 60; 
    $k[1] %= 24; 
    if ($k[3]<10) $k[3] = '0'.$k[3]; 
    if ($k[2]<10) $k[2] = '0'.$k[2]; 
    if ($k[1]<10) $k[1] = '0'.$k[1]; 
    return $k[0].' days : '.$k[1].' hours : '.$k[2].' minutes : '.$k[3].' seconds'; 
} 

$newTotal = '01:45:21'; 
$oldTotal = '03:16:56'; 
echo sumtotal($newTotal,$oldTotal); // result: 0 days : 05 hours : 02 minutes : 17 seconds