2009-12-16 74 views
1

我在PHP中創建了工作總時間程序 - 給出輸入時間 - 1.30,2.10,1.40並獲得輸出時間 - 4.80(8小時)。但我需要輸出時間 - 5.20(8.40小時)。 備註:1.30 + 2.10 + 1.40 = 4.80(8小時),但我需要5.20(8.40小時)。請幫我...如何讓PHP總時間?

+0

只需添加額外的40分鐘即可。或者有什麼你不告訴我們的? – dave4420 2009-12-16 13:09:53

+1

4.80 = 8小時和5.20 = 8.40小時?什麼樣的時間測量是?愛因斯坦相對論什麼的? – Lukman 2009-12-16 13:09:53

+0

4.80和8小時一樣,我錯過了什麼? – 2009-12-16 13:10:02

回答

2

1.30 + 2.10 + 1.40是錯誤的。應該是:

((1 * 60)+ 30)+((2 * 60)+ 10)+((1 * 60)+ 40)= 320(分鐘)

320分鐘=5小時和20分鐘。

0

你需要跟蹤分鐘和秒的分別:

$minutes = array(); 
$seconds = array(); 
foreach ($times as $time) { 
    $parts = explode('.', $time); 
    $minutes[] = $time[0]; 
    $seconds[] = $time[1]; 
} 
$total_minutes = array_sum($minutes); 
$total_seconds = array_sum($seconds); 
while ($total_seconds > 60) { 
    $total_minutes++; 
    $total_seconds -= 60; 
} 
echo $total_minutes . ' minutes and ' . $total_seconds . ' seconds'; 
0

從PHP網站摘錄爲您的樂趣:

function AddTime ($oldTime, $TimeToAdd) { 
    $pieces = split(':', $oldTime); 
    $hours=$pieces[0]; 
    $hours=str_replace("00","12",$hours); 
    $minutes=$pieces[1]; 
    $seconds=$pieces[2]; 
    $oldTime=$hours.":".$minutes.":".$seconds; 

    $pieces = split(':', $TimeToAdd); 
    $hours=$pieces[0]; 
    $hours=str_replace("00","12",$hours); 
    $minutes=$pieces[1]; 
    $seconds=$pieces[2]; 

    $str = $minutes." minute ".$seconds." second" ; 
    $str = "01/01/2000 ".$oldTime." am + ".$hours." hour ".$minutes." minute ".$seconds." second" ; 

    if (($timestamp = strtotime($str)) === false) { 
    return false; 
    } else { 
    $sum = date('h:i:s', $timestamp); 
    $pieces = split(':', $sum); 
    $hours = $pieces[0]; 
    $hours = str_replace("12", "00", $hours); 
    $minutes = $pieces[1]; 
    $seconds = $pieces[2]; 
    $sum = $hours.":".$minutes.":".$seconds; 
    return $sum; 
    } 
} 

$firstTime = "00:03:12"; 
$secondTime = "02:04:34"; 

$sum=AddTime($firstTime, $secondTime); 

if($sum != false) { 
    echo $firstTime." + ".$secondTime." = ".$sum; 
} else { 
    echo "failed"; 
} 

輸出:

00:03:12 + 02:04:34 = 02:07:46 
+0

這段代碼具有良好的開銷IMO,但會爲你工作。 – 2009-12-16 13:31:56

0

對於每個編號(代表下面的$t)你可以這樣做:

// start with $total=0 
$hours = floor($t); // 1.10 -> 1 hr 
$minutes = ($t - $hours) * 100; // 1.10 -> 10 mins 
$total += ($hours * 60) + $minutes; 

這會給你總分鐘數。要分別獲得小時/分鐘,請執行以下操作:

$total_mins = $total % 60; // 130 -> 10 mins 
$total_hours = ($total - $total_mins)/60; // 130 -> 2 hrs