У меня есть этот string
объект в моем php-массиве
"2013-03-05 00: 00: 00 + 00"
Я хотел бы добавить 12 часов к записи в PHP, а затем сохранить ее обратно в строку в том же формате
Я считаю, что это связано с преобразованием строки в объект даты. Но я не уверен, насколько умен объект даты, и нужно ли мне указывать его параметры форматирования или если он должен просто взять строку
$date = new DateTime("2013-03-05 00:00:00+00"); $date->add("+12 hours"); //then convert back to string or just assign it to a variable within the array node
Я возвращал пустые значения из этого метода или аналогичный, который я пробовал
Как бы вы решили эту проблему?
Спасибо, ваше понимание оценено
Измените add()
чтобы modify()
. add()
ожидает объект DateInterval.
<?php $date = new DateTime("2013-03-05 00:00:00+00"); $date->modify("+12 hours"); echo $date->format("Ymd H:i:sO");
Смотрите это в действии
Вот пример использования объекта DateInterval:
<?php $date = new DateTime("2013-03-05 00:00:00+00"); $date->add(new DateInterval('PT12H')); echo $date->format("Ymd H:i:sO");
Смотрите это в действии
Изменить эту строку
$date->add("+12 hours");
с
$date->add(new DateInterval("PT12H"));
это добавит 12 часов к вашей дате
Посмотрите на страницу конструктора DateInterval, чтобы узнать, как построить строку DateInterval
Используйте это, чтобы добавить часы,
$date1= "2014-07-03 11:00:00"; $new_date= date("Ymd H:i:s", strtotime($date1 . " +3 hours")); echo $new_date;
Если у вас есть динамический интервал, этот способ позволит избежать ошибок неправильного формата для $ dateDiff:
$dateDiff = "12 hours"; $interval = DateInterval::createFromDateString($dateDiff); $date = new DateTime("2013-03-05 00:00:00+00"); $date->add($interval); echo $date->format("Ymd H:i:sO");
-$dateDiff = "12 hours"; $interval = DateInterval::createFromDateString($dateDiff); $date = new DateTime("2013-03-05 00:00:00+00"); $date->add($interval); echo $date->format("Ymd H:i:sO");
При необходимости здесь пример. Джейсон написал хороший пример, который объясняет эту проблему.