Вы можете сделать что-то подобное в PHP 5.3:
$d = new DateTime("01:00");
$f = $d->add(new DateInterval("PT04H30M"));
echo $f->format("H:i"); //outputs 05:30
Преобразование 04:30 в PT04H30M должно быть тривиальным.Обратите внимание, что то, что вы на самом деле хотите, зависит от того, что вы подразумеваете под «04:30».Этот код может или не может составить 4 * 60 + 30 минут к фактическому времени.
Если вы имеете в виду «4 часа и 30 минут на часах», это всегда правильно.Однако если вы имеете в виду «4 * 60 + 30 минут», это зависит от дня и часового пояса.Пример:
$d = new DateTime("2010-03-28 01:00 Europe/Lisbon");
$f = $d->setTimestamp($d->getTimestamp() + (4*60+30)*60);
echo $f->format("H:i"); //outputs 06:30 due to DST
Альтернативная реализация случая last (при условии текущего дня и часового пояса по умолчанию) для PHP 5.2:
echo date("H:i", strtotime("+4 hours +30 mins", strtotime("01:00")));
Для первого случаямы должны сделать:
date_default_timezone_set("UTC");
echo date("H:i", strtotime("+4 hours +30 mins", strtotime("01:00")));