2011-02-15 33 views
1

我需要輪迴一些時間。我想知道如何將時間轉換爲下一個小時,並將其作爲PHP中的int使用。PHP回合時間和小時

例:

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

任何想法?

問候 克勞迪奧

+1

正時代琴絃? – Tim 2011-02-15 18:34:56

+0

假設是小時:MINUTES:SECONDS你在那裏,就持續時間而言? – 2011-02-15 18:35:28

回答

0

如果處理時間字符串像數字,PHP把它像一個並刪除everyting但第一個數字。

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

你想要的東西像DateTime::setTime。使用日期函數提取小時/分鐘/秒,計算小時是否需要增加,然後將小時設置爲適當的值,並將分鐘和秒數歸零。

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); 
       } 
     }