2010-12-04 72 views
0

我有這個奇怪的錯誤發生。我基本上只是增加幾分鐘的時間格式類似於'12時間:20PM」用下面的函數...時間錯誤(我的腳本)PHP

function calc_arb_time($startTime, $amount){ 
     $startTime = date('Y-m-d') . substr($startTime,0,-2); 
     $startTime = strtotime($startTime); 


     $seconds = $amount*60; 
     $startTime += $seconds; 
     $newStartTime = date('g:ia', $startTime); 
     return($newStartTime); 
    } 

echo calc_arb_time('12:20pm',20); // <-- this returns 12:40pm which is great 

echo calc_arb_time('1:20pm',20); // this returns 1:40am... Why the AM?? 

回答

2

你沒有做任何保護上午下午部分?如果你不打算使用它,也不要擔心日期部分。

此代碼更簡單,它工作正常:

function calc_arb_time($startTime, $amount){ 
    $startTime = strtotime('+'.$amount.' minutes', strtotime($startTime)); 
    return date('g:ia', $startTime); 
} 
echo calc_arb_time('12:20pm',20).PHP_EOL; 
echo calc_arb_time('1:20pm',20); 

而且我不知道該功能的名稱反映它做什麼。你應該考慮改變它。

+0

函數名字的意思是計算任意時間...感謝您的輸入:) – 2010-12-04 19:08:46

+0

@Jascha好,如果你知道參數的輸出,它並不是真正的任意:)。對於輸入:沒問題,我建議你花點時間和`strtotime`玩一下。如果你知道如何使用它,我可以成爲一個真正的節省時間的人。 – 2010-12-04 19:10:14

0

你也可能想看看DateTime類:

$date = DateTime::createFromFormat('g:ia', '12:20pm'); 
$date->add(new DateInterval('PT20M')); 
echo $date->format('H:i:s'); 

$date = DateTime::createFromFormat('g:ia', '1:20pm'); 
$date->add(new DateInterval('PT20M')); 
echo $date->format('H:i:s'); 

打印:

12:40:00 
13:40:00