Как добавить час во время этой строки datetime?
Вот пример строк 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'));
Но вторая строка дает ошибку, что она не может быть преобразована.
Спасибо.
Ответы
Ответ 1
Вы должны добавить T
до части спецификации времени:
$time = 'Tue May 15 10:14:30 +0000 2012';
$dt = new DateTime($time);
$dt->add(new DateInterval('PT1H'));
Смотрите документацию DateInterval
конструктор:
Формат начинается с буквы P для "периода". Каждый период продолжительности представлен целым значением, за которым следует указатель периода. Если продолжительность содержит элементы времени, эта часть спецификации , которой предшествует буква T.
(добавлен акцент)
Ответ 2
Предыдущие ответы работают. Тем не менее, я обычно использую модификацию datetime на моих внешних веб-сайтах. Проверьте руководство 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");
Лучший,
Ответ 3
Использование strtotime()
:
$time = 'Tue May 15 10:14:30 +0000 2012';
$time = strtotime($time) + 3600; // Add 1 hour
$time = date('D M j G:i:s O Y', $time); // Back to string
echo $time;