2015-09-16 83 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

相關問題