Установите дату и время в Symfony2 из строки

В моей сущности у меня есть два поля, одно типа DateTime и другое время типа.

Я пытаюсь сделать это:

$time = "05:45";
$date = "01-09-2015"
$entity = new Entity();
$entity->setDate(new \DateTime($date));
$entity->setTime($time);

В обоих случаях Symfony сказал мне, что в коде есть проблемы с форматированием.

Я также попробовал:

->setDate(new Datetime($date));
->setDate(DateTime::createFromFormat($date, 'd-m-Y));
->setTime(strtotime($time));

Всегда с одинаковым результатом.

Если кто-нибудь может мне помочь, я буду благодарен.

Спасибо


ОБНОВЛЕНО

Теперь я попробовал

$date = strtotime($date);
$time = strtotime($time);
$entity->setDate(date("d-m-Y", $date));
$entity->setTime(date("H:i",$time));

И Symfony сказал мне:

Ошибка: вызов функции-члена format () для необъекта

in vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/TimeType.php at line 53   -
public function convertToDatabaseValue($value, AbstractPlatform $platform)
{
return ($value !== null)
? $value->format($platform->getTimeFormatString()) : null;
}
/**

Я также попробовал это:

$dateObject = new DateTime();
$date = $dateObject->format('d-m-Y');
$time = $dateObject->format('H:i');
$entity->setDate($date);
$entity->setTime($time);

И Symfony сказал мне:

Attempted to call method "format" on class "Symfony\Component\Validator\Constraints\DateTime". On line "$date = $dateObject->format('Y-m-d');"

Спасибо за помощь


Обновлено — Решить

Наконец, вчера решена проблема с использованием этого:

$entity->new Entity();
$entity->setDate(\DateTime::createFromFormat('d-m-Y',$date));
$entity->setTime(\DateTime::createFromFormat('H:i',$time));

Спасибо!

4

Решение

Symfony не знает где найти DateTime класс, поэтому он ищет в неправильном (по умолчанию) пространстве имен. Используйте ведущий \,

Кроме того, вы перевернули format аргумент и тому time аргумент в createFromFormat() функция.

Итак, ваш код становится:

$time = "05:45";
$date = "01-09-2015"
$entity = new Entity();
$entity->setDate(\DateTime::createFromFormat('d-m-Y', $date));
$entity->setTime(\DateTime::createFromFormat('H:i', $time));

Кстати, вы уверены, что вам действительно нужно разделить дату и время в вашей сущности? Это зависит от вашего случая, но вы можете сделать это вместо этого (только один объект для манипуляции):

$time = "05:45";
$date = "01-09-2015"
$entity = new Entity();
$entity->setDateTime(\DateTime::createFromFormat('d-m-Y H:i', $date.' '.$time));
6

Другие решения

Проверять, выписываться http://php.net/manual/de/datetime.createfromformat.php чтобы убедиться, что ваш формат подходит.

Или проверьте mktime (час, минута, секунда, месяц, день, год)
Или проверьте strtotime (время, сейчас)
например Вот http://www.w3schools.com/php/php_date.asp

1

Сделай это так:

$dateObject = new DateTime();
$date = $dateObject->format('Y-m-d');
$time = $dateObject->format('H:i:s'); // or $time = $dateObject->format('H:i'); if you dont want to have the seconds

$entity = new Entity();
$entity->setDate($date);
$entity->setTime($time);
1
По вопросам рекламы [email protected]