2013-05-06 114 views
0

我如何計算在PHP中的總行程時間:計算總旅行時間在PHP

每英里時間:〇點11分40秒

總里程:177

總時長:34: 25:00

我試過不同的方法,但無法完成。

$distance = "177"; 
$parsetime = strtotime("00:11:40"); 

$otfrom_string = time(); 
$needed = $parstime*$distance; 
$otto_string = $otfrom_string+$needed; 

echo date("H:i:s",$otfrom_string)."<br />"; 
echo date("H:i:s",$otto_string)."<br />"; 

$start = $otfrom_string; 
$end = $otto_string; 
$elapsed = $end - $start; 
echo date("H:i:s", $elapsed); 
+1

可能重複[PHP如何找到因爲日期經過的時間?(http://stackoverflow.com/questions/2915864/php-how-to-find-the-time-elapsed-since-a-date-time) – 2013-05-06 13:10:07

+0

你會得到什麼輸出結果?或者,如果你沒有得到任何輸出,你會得到什麼錯誤?你爲什麼認爲這是事實? – sgroves 2013-05-06 13:10:20

+0

這是輸出: 2013-05-06 14:37:17 1927-05-06 20:30:37 15:02:04 – WillieBoy 2013-05-06 13:14:57

回答

0
$time = '00:11:40'; 
$distance = 177; 

list($h,$m,$s) = explode(':',$time); 

$nbSec = $h * 3600 + $m * 60 + $s; 
$totalDuration = $nbSec * $distance; 

echo nbSecToString($totalDuration);//print 34:00:25 


function nbSecToString($nbSec) { 

    $tmp = $nbSec % 3600; 
    $h = ($nbSec - $tmp)/3600; 
    $s = $tmp % 60; 
    $m = ($tmp - $s)/60; 

    $h = str_pad($h, 2, "0", STR_PAD_LEFT); 
    $m = str_pad($m, 2, "0", STR_PAD_LEFT); 
    $s = str_pad($s, 2, "0", STR_PAD_LEFT); 

    return "$h:$m:$s"; 
} 

Demo

+0

謝謝!這解決了問題! – WillieBoy 2013-05-07 08:55:21

0

strtotime返回成功的時間戳,否則返回false。我想你已經把177的時間戳加起來了,這不是計算持續時間的方法。

我建議你在幾秒鐘內轉換你的字符串,然後乘以177,然後將下面的代碼的結果添加到當前時間,你會得到「到達」時間。

要轉換字符串秒使用

$timestr = '00:30:00'; 
    $parts = explode(':', $timestr); 
    $seconds = ($parts[0] * 60 * 60) + ($parts[1] * 60) + $parts[2];