我发现了这个奇怪的错误。我基本上只是添加几分钟到格式为'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??
答案 0 :(得分:2)
你没有做任何事情来保护 am 或 pm 部分?如果您不打算使用它,也不要担心日期部分。
此代码更简单,工作正常:
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);
此外,我不确定该功能的名称是否反映了它的作用。你应该考虑改变它。
答案 1 :(得分: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