PHP время и часы - PullRequest
       22

PHP время и часы

1 голос
/ 15 февраля 2011

Мне нужно округлить несколько раз.Я хотел бы знать, как я могу округлить время до следующего часа и использовать его как int в PHP.

Пример:

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

Есть идеи?

С уважением, Клаудио

Ответы [ 4 ]

3 голосов
/ 15 февраля 2011

Я предполагаю, что вы используете формат ЧАСЫ: МИНУТЫ: СЕКУНДЫ, выражая продолжительность времени, а не время суток, и я предполагаю, что вы получили это значение в виде строки.В этом случае ваше решение - это функция домашнего приготовления, так как это довольно специфический случай.Примерно так:

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

3 голосов
/ 15 февраля 2011

Вы бы хотели что-то вроде DateTime :: setTime .Используйте функции даты для извлечения часов / минут / секунд, выясните, нужно ли увеличивать час, затем установите для часа соответствующее значение и обнулите минуты и секунды.при повторном чтении вашего вопроса, что-то вроде этого:

$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
2 голосов
/ 15 февраля 2011
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);
                }
         }
0 голосов
/ 15 февраля 2011

Если вы обрабатываете временную строку как число, PHP обрабатывает ее как одну и удаляет все, кроме первых цифр.

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