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

나는 이것을 사용하고 싶지만 나는