1

何度かラウンドする必要があります。時間を次の時間に丸め、それを PHP の int として使用する方法を知りたいです。

元:

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

何か案は?

よろしくクラウディオ

4

4 に答える 4

3

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
于 2011-02-15T18:38:41.290 に答える
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

于 2011-02-15T19:01:47.390 に答える
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);
                }
         }
于 2011-02-15T19:07:32.873 に答える
0

時間文字列を数値のように処理する場合、PHPはそれを1のように扱い、最初の数字以外のすべてを削除します。

print '48:40:30' + 1; # 49
print '30:00:00' + 1; # 31
于 2011-02-15T18:39:53.053 に答える