PHP轮时间和小时

时间:2011-02-15 18:34:04

标签: php time rounding hour

我需要经过一段时间。我想知道如何将时间延长到下一个小时,并将其用作PHP中的int。

例如:

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

有什么想法吗?

此致 克劳迪奥

4 个答案:

答案 0 :(得分:3)

你想要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

答案 1 :(得分:3)

我假设您使用的格式是HOURS:MINUTES:SECONDS,表示持续时间而不是一天中的某个时间,我假设您已将此值作为字符串。在这种情况下,您的解决方案是家庭酿造功能,因为这是一个非常具体的案例。像这样:

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 :(得分: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);
                }
         }

答案 3 :(得分:0)

如果你像处理一个数字一样处理时间字符串,那么PHP就会像处理一个数字一样处理它,并删除除了第一个数字之外的所有字符串。

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