2012-05-11 5 views
4

Можно создать дубликат:.
PHP date timePHP DateTime добавить один второй

Попытка добавить одну секунду в DateTime, который вводится пользователем $ значений [ 'Дата_начала _' $ J .'- '. $ i] является допустимой строкой datetime, однако следующий код выдает ошибку

$priceStart = date('Y-m-d H:i:s',strtotime($values['start_date_'.$j.'-'.$i])); 
date_modify($priceStart, '+1 second'); 
$priceStart =date_format($priceStart, 'Y-m-d H:i:s'); 

Ошибка: «date_modify() ожидает, что параметр 1 будет DateTime, строка, указанная в ... on line ...» такая же ошибка для date_format()

Каков правильный синтаксис для этого?

+0

Вы абсолютно правы и решили мою проблему. как удалить этот вопрос? – Mike

ответ

11

date() дает вам строку. date_modify нужен объект DateTime.

Самый простой способ сделать то, что вы хотите просто прибавлением к значению, возвращаемому strtotime():

$priceStart = date('Y-m-d H:i:s',strtotime($values['start_date_'.$j.'-'.$i]) + 1); 

Или, вы можете создать DateTime объект:

$priceStart = new DateTime('@' . strtotime($values['start_date_'.$j.'-'.$i])); 

и остальной ваш код должен начать работать.

+1

+1. Именно то, что я собирался сказать о классе DateTime. Для получения дополнительной информации см. Пример здесь: http://www.php.net/manual/en/datetime.modify.php – EmmanuelG

11

Вместо этого используйте объект DateTime. Это намного более мощно и легко для этого.

$priceStart = new DateTime("@" . strtotime($values['start_date_'.$j.'-'.$i])); 
$priceStart->modify("+1 second"); //You're pretty much done here! 
echo $priceStart->format("Y-m-d H:i:s"); //Just to see the result. 
+0

Это должен быть одобренный ответ. Он использует рекомендуемую модель 'DateTime', а также лучше читает при просмотре позже. – Paulo

Смежные вопросы