2011-02-15 4 views
1

몇 차례 돌아볼 필요가 있습니다. 나는 다음 시간으로 어떻게 시간을 돌려서 PHP에서 int로 사용할 수 있는지 알고 싶습니다.PHP 반올림 시간 및 시간

예 :

24:00:02 -> 25 
33:15:05 -> 34 
48:40:30 -> 49 

어떤 아이디어?

감사 클라우디오는

+1

은 시간 문자열이 있습니까? – Tim

+0

시간 : HOURS : MINUTES : SECONDS로 가정하십시오. –

답변

0

을, PHP는 하나처럼 취급하고 첫 번째 자리 만 everyting을 제거합니다. 오히려 하루의 시간보다 시간의 지속 시간을 표현하는 초, 그리고 당신이 문자열로이 값을 가지고 있다고 가정합니다 : 분 : 나는 당신이 사용하고있는 형식을 가정하고

print '48:40:30' + 1; # 49 
print '30:00:00' + 1; # 31 
+1

이것은 하나씩 값을 증가 시키지만 단어의 의미에서 "반올림"하지는 않습니다 - 이것이 OP가 요구하는 것입니다. 분 및 초 값을 고려하지 않습니다. –

+1

@Chris : 예를 들어, OP가 '라운드'가 아니라 '천장'을 원한다는 것이 분명합니다. 30:00:00의 예를 사용하여 이해했는지 확인했습니다. – Tim

+0

원래 예제에서는 Tim이 설명한대로 이것을 요구했지만 모든 사람들이 전통적인 의미에서 '반올림'솔루션을 위해 혼란스러워했습니다. – DeaconDesperado

2

당신은 DateTime::setTime 뭔가를 원하는 것입니다. 날짜 함수를 사용하여 시간/분/초를 추출하고, 시간을 증가시켜야하는지 알아 낸 다음 시간을 적절한 값으로 설정하고 분과 초를 0으로 설정하십시오.

hmm. 다시이 같은 질문을 읽고 : 당신이 수와 같은 시간 문자열을 처리 할 경우

$sec = date('s', $timevalue); 
$min = date('i', $timevalue); 
$hour = date('G', $timevalue); 

if (($sec > 0) or ($min > 0)) { $hour++; } // if at x:00:01 or better, "round up" the hour 
3

는 시간입니다 . 어떤 경우에는 솔루션이 가정용 양조 기능입니다. 매우 구체적인 사례입니다. 이런 식으로 뭔가 :

function roundDurationUp($duration_string='') { 
    $parts = explode(':', $duration_string); 
    // only deal with valid duration strings 
    if (count($parts) != 3) 
     return 0; 

    // round the seconds up to minutes 
    if ($parts[2] > 30) 
     $parts[1]++; 

    // round the minutes up to hours 
    if ($parts[1] > 30) 
     $parts[0]++; 

    return $parts[0]; 
    } 

print roundDurationUp('24:00:02'); // prints 25 
print roundDurationUp('33:15:05'); // prints 34 
print roundDurationUp('48:40:30'); // prints 49 

그것을 시도 : http://codepad.org/nU9tLJGQ

2
function ReformatHourTime($time_str){ 
       $min_secs = substr($time_str,3); 
       $direction = round($min_secs/60); 

       if($dir == 1){ 
        return $time_str+1; 
       }else{ 
        return floor($time_str); 
       } 
     }