从字符串设置 Symfony2 中的日期时间和时间
Set DateTime and Time in Symfony2 from String
在我的实体中,我有两个字段,一个是 DateTime 类型,另一个是 Time 类型。
我正在尝试这样做:
$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));
谢谢!
查看 http://php.net/manual/de/datetime.createfromformat.php 以确保您的格式适合。
或检查mktime(时、分、秒、月、日、年)
或者检查 strtotime(time,now)
例如这里http://www.w3schools.com/php/php_date.asp
这样做:
$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);
Symfony 不知道在哪里可以找到 DateTime
class,所以它在错误的(默认)命名空间中搜索。使用前导 \
。
此外,您在 createFromFormat()
函数中反转了 format
参数和 time
参数。
因此您的代码变为:
$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));
在我的实体中,我有两个字段,一个是 DateTime 类型,另一个是 Time 类型。
我正在尝试这样做:
$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));
谢谢!
查看 http://php.net/manual/de/datetime.createfromformat.php 以确保您的格式适合。
或检查mktime(时、分、秒、月、日、年) 或者检查 strtotime(time,now) 例如这里http://www.w3schools.com/php/php_date.asp
这样做:
$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);
Symfony 不知道在哪里可以找到 DateTime
class,所以它在错误的(默认)命名空间中搜索。使用前导 \
。
此外,您在 createFromFormat()
函数中反转了 format
参数和 time
参数。
因此您的代码变为:
$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));