Вы должны преобразовать все значения в секундах. Таким образом, вы можете преобразовать ваше время потратить с помощью этого
$str_time = "2:50";
sscanf($str_time, "%d:%d:%d", $hours, $minutes, $seconds);
$timeSeconds = isset($seconds) ? $hours * 3600 + $minutes * 60 + $seconds : $hours * 60 + $minutes;
Затем вы можете конвертировать часов до нескольких секунд путем умножения на 3600
$totalSeconds = $totalHours * 3600;
Тогда вы можете вычитать друг от друга, чтобы получить оставшиеся секунды.
$remainingSeconds = $totalSeconds - $timeSeconds;
Затем отформатировать его обратно в то время
$timeText = gmdate("H:i:s", remainingSeconds);
спасибо. это работает, но в случае, если timeSpend больше, чем общее количество часов, он терпит неудачу i $ totalHours = 30; $ timeSpend = 31: 22: 00 ineed answer -01: 22: 00 – Asif
Вы должны проверить, осталось ли оставшиеся секунды <0, прежде чем вы измените формат назад. – Brett