2010-12-04 9 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

関数名は、任意の時間を計算する意味...あなたの入力に感謝:) –

+0

@Jaschaまあ、あなたがパラメータからの出力を知っているなら、それは本当に恣意的ではありません:)。入力に関しては問題ありません。私はあなたの時間を 'strtotime'で少し遊ばせることをお勧めします。あなたがそれを使う方法を知っているなら、私はリアルタイムの節約になることができます。 –

+0

私は2つの他の関数に特定の時間を追加することは任意です。しばらくの間、私は任意の数分を追加する必要があります。そこで関数calc_arb_time()を呼び出します。 –

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 
+0

私はこれを使いたいですが、私は

関連する問題