Подскажите, как правильно складывать значения времени? Время получаю в формате 04:00, перевожу его в таймстамп, затем делаю сложение. Но результат оставляет желать лучшего - вместо 08:00 получаю 05:00. Собственно вот код:
$th2 = strtotime(date('Y-m-d')."04:00");
$th3 = strtotime(date('Y-m-d')."04:00");
print_r(date("h-i", $th2+$th3));
Хотя работа с встроенным классом DateTime более гибкая и удобная.
Решение:
$date = strtotime('04:00') + strtotime('04:00') - strtotime("00:00:00");
echo date('H:i',$date);
Можно к некоторой полуночи прибавлять временные интервалы:
$d = new DateTime("00:00");
echo $d->format('Y-m-d H:i')."\n";
$interval1 = new DateInterval("PT4H");
$interval2 = new DateInterval("PT5H");
// Альтернативный формат:
// $interval1 = DateInterval::createFromDateString("4 hours + 0 min");
// $interval2 = DateInterval::createFromDateString("5 hours + 0 min");
$d->add($interval1);
$d->add($interval2);
echo $d->format('H:i')."\n";
Вывод:
2017-05-30 00:00:00
09:00
Можно пойти чуть дальше и вычитать оригинальную дату, чтобы получить только сумму интервалов:
$d = new DateTime("00:00");
$save = clone $d;
$interval1 = DateInterval::createFromDateString("14 hours + 20 min");
$interval2 = DateInterval::createFromDateString("15 hours + 0 min");
$d->add($interval1);
$d->add($interval2);
echo $save->diff($d)->format('%a д. %H:%I')."\n";
Вывод:
1 д. 05:20
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники