PHP складывает две переменные времени

В моем приложении PHP я хочу рассчитать сумму двух временных переменных. Я ищу что-то вроде этого примера.

$time1 = 15:20:00; $time2 = 00:30:00; $time = $time1+$time2; 

Лучший способ сделать это, скорее всего, будет использовать strtotime для преобразования их в метки времени, а затем сложение вместе:

$o = strtotime($time1)+strtotime($time2);

Если я помню, что правильный strtotime поддерживает этот формат.

В противном случае вам нужно будет отфильтровать его самостоятельно.

Следующий ответ не возвращает правильное значение. Он суммирует целые числа, но не возвращает правильное время.

$ o = strtotime ($ time1) + strtotime ($ time2);

Я создал функцию, чтобы получить расчетное время следующим образом.

 public function addTwoTimes($time1 = "00:00:00", $time2 = "00:00:00"){ $time2_arr = []; $time1 = $time1; $time2_arr = explode(":", $time2); //Hour if(isset($time2_arr[0]) && $time2_arr[0] != ""){ $time1 = $time1." +".$time2_arr[0]." hours"; $time1 = date("H:i:s", strtotime($time1)); } //Minutes if(isset($time2_arr[1]) && $time2_arr[1] != ""){ $time1 = $time1." +".$time2_arr[1]." minutes"; $time1 = date("H:i:s", strtotime($time1)); } //Seconds if(isset($time2_arr[2]) && $time2_arr[2] != ""){ $time1 = $time1." +".$time2_arr[2]." seconds"; $time1 = date("H:i:s", strtotime($time1)); } return date("H:i:s", strtotime($time1)); } 

Вы можете использовать PHP 5.3 DateInterval :

 $timeInterval = DateInterval::createFromDateString( '15 hours + 20 minutes' ); $timeInterval2 = DateInterval::createFromDateString( '30 minutes' ); foreach( str_split( 'ymdhis' ) as $prop ) { $timeInterval->$prop += $timeInterval2->$prop; } var_dump( $timeInterval->format( '%H:%i:%s' ) ); 

(Как добавить к объектам DateInterval здесь было объяснено: как мы можем добавить два интервала дат в PHP )

Если ответ, который вы ожидаете, составляет 15:50:00 и вы хотите использовать функции strtotime и date , вы должны вычесть секунды $time1 и $time2 при преобразовании их в временные метки unix:

 $time1 = '15:20:00'; $time2 = '00:30:00'; $time = strtotime($time1) + strtotime($time2) - strtotime('00:00:00'); $time = date('H:i:s', $time); 

Насколько я могу судить, ответ Саммай не помог мне.

Мне нужно было начать то время, которое я хотел добавить с началом отметки времени UNIX. Таким образом, strtotime возвращает секунды, которые необходимо добавить в первый раз.

 $time1 = "15:20:00"; $time2 = "1970-01-01 00:30:00"; $time = strtotime($time1) + (strtotime($time2) + 3600); echo $time . "<br />"; echo date("H:i:s", $time); 

Обязательно проконсультируйтесь с мистическими документами http://us1.php.net/strtotime для дополнительных вещей, которые вы можете внести в свои функции 🙂

 $today = time(); $tommorrow = strtotime("+1 days", $today); $day_after_tomorrow = strtotime("+1 days", $tomorrow); 

Код:

 $time1 = '15:20:00'; $time2 = '00:30:00'; $time = strtotime($time1)+strtotime($time2); $sumtime = date("H:i:s",$time);