2015-09-16 176 views
2

在我的实体中,我有两个字段,一个类型DateTime和其他类型的时间。从字符串在Symfony2中设置日期时间和时间

我试图做到这一点:

$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的告诉我说:

错误:调用一个成员函数的格式()在非-object

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');" 

感谢您的帮助


更新 - 解决

最后,昨天解决了问题em,使用这个:

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

谢谢!

+0

你能复制粘贴Symfony的错误信息吗? – Blacksad

+0

我出去了。三个小时后,我要回家了,我会把错误代码。谢谢。 – jekeyeke

+0

我使用更改的结果更新了帖子。 – jekeyeke

回答

4

Symfony的不知道去哪里找DateTime类,所以它是在错误的(默认)命名空间搜索。使用领先的\

此外,您在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)); 
+0

嗨!是的,我需要分割日期和时间。我更新了这个帖子,并得到了我昨晚得到的最终结果。这跟你的下属非常相似。谢谢。 – jekeyeke

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); 
+0

谢谢你的代码,请知道Symfony抛出这个错误: 试图在类“Symfony \ Component \ Validator \ Constraints \ DateTime”上调用方法“格式”。 联机“$ date = $ dateObject-> format('Y-m-d');” – jekeyeke

+1

而不是$ dateObject = new DateTime();使用: $ dateObject = new \ DateTime(); //查看\ DateTime –

+0

最后我用createFromFormat解决了它,它的工作原理非常完美。谢谢! – jekeyeke

相关问题