Добавление разного времени в php

Здравствуйте, вот простой вопрос. Меня смущают функции Php, связанные со временем ;-(

Учитывая 2 переменные

$start = "2013-07-25 20:24:13" ('Y-m-d H:i:s'); 
$duration = "0:55" ('H:i');

Как добавить $duration к $start? должно привести к:

"2013-07-25 21:19:13"


person TNT_Larsn    schedule 22.08.2013    source источник
comment
php.net/manual/en/function.date-add.php   -  person random_user_name    schedule 22.08.2013
comment
Все, вероятно, было бы гораздо менее запутанным, если бы вы использовали только временные метки, за исключением случаев, когда вам нужно отображать дату.   -  person Ariane    schedule 22.08.2013
comment
В дополнение к обману: stackoverflow.com/search?q=how+to+add+date+ php   -  person Gordon    schedule 22.08.2013
comment
Вот что я придумал:‹code› $start = strtotime($start); $ продолжительность = взорвать (':', $ продолжительность); $end = date(Y-m-d H:i:s, strtotime('+'.$duration[0].' час '.$duration[1].' минуты', $start));‹/code›   -  person TNT_Larsn    schedule 23.08.2013


Ответы (1)


Используйте DateTime() с DatePeriod()

$dt = new DateTime('2013-07-25 20:24:13');
$dt->add(new DatePeriod('P55M'));
echo $dt->format('Y-m-d H:i:s');
person John Conde    schedule 22.08.2013
comment
+ Побей меня. Обратите внимание, что класс DateTime доступен в PHP 5.3+. - person Jason McCreary; 22.08.2013
comment
Если люди все еще используют 5.2 и разрабатывают в нем новые проекты, им следует как-то остановить это @JasonMcCreary. Черт, даже 5.3 будет EOL в следующем году. - person PeeHaa; 22.08.2013
comment
@PeeHaa, полностью согласен. Добавлено для полноты. - person Jason McCreary; 22.08.2013
comment
$dt-›добавить(новый DatePeriod('P55M')); не работает, потому что $duration является динамической и также может быть 1:15 - person TNT_Larsn; 22.08.2013
comment
@TNT_Larsn Вам нужно будет преобразовать это в часы и минуты, что легко сделать (explode()). Приведенный выше пример просто показывает вам, как выполнять математические операции. - person John Conde; 22.08.2013