時間と分の計算

paiza問題集より

問題集のコードは公開しても大丈夫なようなので。

「文字列 PHP編」FINAL問題 文字列

<?php
    // 自分の得意な言語で
    // Let's チャレンジ!!

    $num = trim(fgets(STDIN));
    for ($i = 0; $i < $num; $i++) {
        
        $s = trim(fgets(STDIN));
        $s = str_replace(array("\r\n","\r","\n"), '', $s);
        $s = explode(" ", $s);
        //echo "hello = ".$s[0]." , world = ".$s[1]." , world = ".$s[2]."\n";
  
        
        $time = $s[0];
        //$time = "23:00";
        $add_hour = $s[1];
        $add_minute = $s[2];
        
        $hour = substr($time, 0, 2);
        $minute = substr($time, 3, 2);
        //echo($hour.",".$minute."\n");
        
        $minute += $add_minute;
        if($minute >= 60){
            $minute -= 60;
            $hour ++;
        }
        
        $hour += $add_hour;
        if($hour >= 24){
            $hour -= 24;
        }
        
        
        //二けたにする
        if(mb_strlen($hour)<2){
            $hour = "0".$hour;
        }
        if(mb_strlen($minute)<2){
            $minute = "0".$minute;
        }
             
        echo($hour.":".$minute."\n");     
        
    }


?>

3回ぐらい引っかかってハテナになった問題です。
「先に」分であるminuteを処理して、60以上の値の時にhourを繰り上げておかないといけなかったんですね。
hourを先に処理していたので、そのあとがバグる結果になってしまっていました。

0
カテゴリー: php