2014-01-11 3 views
2

나는 어디에서나 보았지만 나를 도울 수있는 구체적인 답을 찾지 못했습니다.분을 PHP 및 음수 분으로 시간과 분으로 변환하는 방법은 무엇입니까?

저는 이것을 해결하려고합니다. 우리는 직원들이 대신 시간을 확보하고 사용할 수있는 시스템을 갖추고 있습니다. 따라서 MySQL DB에서 분 단위로 기록하고 날씨를 추가하거나 제거합니다.

다음은 직원이 비즈니스 시간을 빚지고있는 경우 가끔 음수가 될 수있는 직원 또는 비즈니스에 현재 지불해야하는 시간 (분)을 계산하는 기능이 있습니다.

이 함수를 사용하여 총 분을시와 분으로 변환합니다. 그러나 말할 때 -15 분, -1hr -15mins로 함수를 반환합니다. 나는이 일이 일어나는 이유를 이해하지만 그 일을 막을 수는 없습니다.

function convertTime() { 
$args = func_get_args(); 
switch (count($args)) { 
    case 1:  //total minutes was passed so output hours, minutes 
     $time = array(); 

     $time['hours'] = floor($args[0]/60); 

     $time['mins'] = ($args[0]%60); 
     return $time; 
     break; 
    case 2:  //hours, minutes was passed so output total minutes 
     return ($args[0] * 60) + $args[1]; 
} 
} 

아무런 도움이 필요합니다.

+0

'func_get_args()'의 반환은 무엇인가 :

그래서 다음에 시간 계산을 위해 줄을 변경? –

답변

0

문제는 바닥 라운드가 인 것을 의미합니다. 원하는 것은 반올림 에 대해입니다. 지금까지 내가 아는 한, 거기에이 작업을 수행하는 단일 기능이 없지만이 작동합니다 :.을

function convertTime() { 
    $args = func_get_args(); 
    switch (count($args)) { 
     case 1:  //total minutes was passed so output hours, minutes 
      $time = array(); 

      $time['hours'] = $args[0] > 0 ? floor($args[0]/60) : ceil($args[0]/60); 

      $time['mins'] = ($args[0]%60); 
      return $time; 
      break; 
     case 2:  //hours, minutes was passed so output total minutes 
      return ($args[0] * 60) + $args[1]; 
    } 
} 

나는 기본적라는 삼항 연산자를 추가 한 "분 그렇지 않으면 아래로 시간 라운드, 0보다 큰 경우, (0에) 시간을 둥글게하십시오. "

편집 : 대신 @ s1lence의 대답을 사용하십시오!

관련 문제