Вот пример строк datetime, с которыми я работаю:
Tue May 15 10:14:30 +0000 2012
Вот моя попытка добавить час на него:
$time = 'Tue May 15 10:14:30 +0000 2012'; $dt = new DateTime($time); $dt->add(new DateInterval('P1h'));
Но вторая строка дает ошибку, что она не может быть преобразована.
Благодарю.
Вы должны добавить T
до части спецификации времени:
$time = 'Tue May 15 10:14:30 +0000 2012'; $dt = new DateTime($time); $dt->add(new DateInterval('PT1H'));
См. DateInterval
конструктора DateInterval
:
Формат начинается с буквы P для «периода». Каждый период продолжительности представлен целым значением, за которым следует указатель периода. Если продолжительность содержит элементы времени, той части спецификации предшествует буква T.
(Добавлен акцент)
Предыдущие ответы работают. Тем не менее, я обычно использую datetime modify на своих внешних веб-сайтах. Подробнее см. Руководство по php . С предлагаемым кодом он должен работать следующим образом:
$time = 'Tue May 15 10:14:30 +0000 2012'; $dt = new DateTime($time); $dt->modify('+ 1 hour');
Для тех, кто не использует ориентацию объектов, просто используйте его таким образом (первая строка DateTime просто для того, чтобы добавить что-то новое в этот поток, я использую его для проверки времени сервера):
$dt = new DateTime("@".$_SERVER['REQUEST_TIME']); // convert UNIX epoch to PHP DateTime $dt = date_modify($dt, "+1 hour");
Лучший,
Использование strtotime()
:
$time = 'Tue May 15 10:14:30 +0000 2012'; $time = strtotime($time) + 3600; // Add 1 hour $time = date('DM j G:i:s O Y', $time); // Back to string echo $time;