<?php $today = date_create("now"); $yesterday=date_create("-1 day"); $allSleepTimeHour=0; $allSleepTimeMin=0; $numDay=trim(fgets(STDIN)); for($i=1;$i<=$numDay;$i++){ $input=explode(" ",trim(fgets(STDIN))); $sleepTime=explode(":",$input[0]); $wakeUpTime=explode(":",$input[1]); //日付またいで寝ているとき if((int)$sleepTime[0]>(int)$wakeUpTime[0]|| ((int)$sleepTime[0]==(int)$wakeUpTime[0]&&(int)$sleepTime[1]>=(int)$wakeUpTime[0])){ $sleepTime=date_time_set($yesterday,(int)$sleepTime[0],(int)$sleepTime[1]); $wakeUpTime=date_time_set($today,(int)$wakeUpTime[0],(int)$wakeUpTime[1]); $diff=date_diff($sleepTime,$wakeUpTime); $oneSleepInterval=$diff->format('%H:%I'); $oneSleepInterval=explode(":",trim($oneSleepInterval)); $allSleepTimeHour +=(int)$oneSleepInterval[0]; $allSleepTimeMin +=(int)$oneSleepInterval[1]; // $allSleepTime+=$oneSleepInterval; }else{ //日付またがず寝ているとき // どうも、日付をまたいでいないとdate_diff使えないみたい $sleepTime=date_time_set($yesterday,(int)$sleepTime[0],(int)$sleepTime[1]); $wakeUpTime=date_time_set($today,(int)$wakeUpTime[0],(int)$wakeUpTime[1]); $diff=date_diff($sleepTime,$wakeUpTime); $oneSleepInterval=$diff->format('%H:%I'); $oneSleepInterval=explode(":",trim($oneSleepInterval)); $allSleepTimeHour +=(int)$oneSleepInterval[0]; $allSleepTimeMin +=(int)$oneSleepInterval[1]; } } $ans=($allSleepTimeHour*60)+$allSleepTimeMin; echo $ans;