0

この奇妙なバグが発生しています。私は基本的に、次の関数を使用して「12:20pm」のようにフォーマットされた時間に数分を追加しています...

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??
4

2 に答える 2

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);

また、関数の名前がその機能を反映しているかどうかもわかりません。変更を検討する必要があります。

于 2010-12-04T18:59:33.630 に答える
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
于 2010-12-04T19:22:55.623 に答える