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 回答