Для того, чтобы это работало, $time
должен быть отметкой времени. Вы не можете передать «10:00» или что-то вроде $time = date('H:i', '10:00');
, что вы, похоже, делаете, потому что тогда я получаю 0:30 и 1:30 в качестве результатов.
Попробуйте
$time = strtotime('10:00');
В качестве альтернативы рассмотрите возможность использования DateTime ( для приведенного ниже требуется PHP 5.3, хотя ):
$dt = DateTime::createFromFormat('H:i', '10:00'); // create today 10 o'clock
$dt->sub(new DateInterval('PT30M')); // substract 30 minutes
echo $dt->format('H:i'); // echo modified time
$dt->add(new DateInterval('PT1H')); // add 1 hour
echo $dt->format('H:i'); // echo modified time
или процедурный, если вам не нравится ООП
$dateTime = date_create_from_format('H:i', '10:00');
date_sub($dateTime, date_interval_create_from_date_string('30 minutes'));
echo date_format($dateTime, 'H:i');
date_add($dateTime, date_interval_create_from_date_string('1 hour'));
echo date_format($dateTime, 'H:i');