Вы можете использовать date () и strtotime ().
Не забудьте установить часовой пояс снова по умолчанию после.
Нам нужен часовой пояс UTC, чтобы не беспокоиться о летнем времени или разнице часовых поясов.
$a = "00:20";
$b = "00:15";
date_default_timezone_set("UTC");
echo date("H:i", strtotime($a) + strtotime($b));
echo "\n\n";
echo date("H:i", strtotime($a) - strtotime($b));
date_default_timezone_set("Your_default_timezone");
//00:35
//00:05
https://3v4l.org/kIVlI
Если вам нужно рассчитать часы и минуты вручную из strtotime.
Если вы хотите добавить это, вам нужно удалить strtotime ("00: 00 ") * 2 из результата, потому что мы используем времена Unix.
Затем я использую str_pad для форматирования часов и минут.
$a = "00:20";
$b = "02:15";
date_default_timezone_set("UTC");
// If addition
$diff = strtotime($a) + strtotime($b) - strtotime("00:00")*2;
$hours = floor($diff /3600);
$minutes = ($diff -($hours *3600))/60;
echo str_pad($hours,2,0, STR_PAD_LEFT) . ":" . str_pad($minutes,2,0, STR_PAD_LEFT) ;
echo "\n\n";
//If subtraction
$diff = strtotime($a) - strtotime($b);
$hours = floor($diff /3600);
$minutes = ($diff -($hours *3600))/60;
echo str_pad($hours,2,0, STR_PAD_LEFT) . ":" . str_pad($minutes,2,0, STR_PAD_LEFT) ;
//date_default_timezone_set("Your_default_timezone");
//02:35
//-2:05