2016-04-15 186 views
-1

我從數據庫中填充我的數組數組。名爲'YayinaBaşlamaZamanı'的專欄是日期時間專欄。我已經試過這個代碼來從datetime對象獲取時間,但它發生「調用成員函數格式()字符串」錯誤。我該如何解決這個錯誤?如何從laravel的datetime獲得時間?

foreach ($sondakikaHaberler as $sonDakikaHaber){ 
      $dt = $sonDakikaHaber->yayina_baslama_zamani; 
      $time = $dt ->format('H:i'); 
      $sonDakikaHaber['yayina_baslama_zamani'] = $time; 
     } 

感謝您的幫助。

+0

是datetime 0000-00-00 00:00:00? – aimme

回答

2

您必須先將數據庫中的日期(以純文本形式存儲)轉換爲DateTime對象。所以,你會得到:

$dt = new DateTime($sonDakikaHaber->yayina_baslama_zamani); 

或者,如果你在一個命名空間中的類是,在日期時間的前面加一個\

或者你也可以在頁面的頂部添加use DateTime而不是添加\DateTime

$dt = new \DateTime($sonDakikaHaber->yayina_baslama_zamani); 

然後您可以調用它的格式化方法。

關於您的次要錯誤(發佈在評論中),您無法將結果對象$sonDakikaHaber轉換爲數組。所以改變:

$sonDakikaHaber['yayina_baslama_zamani'] = $time; 

進入這個:

$sonDakikaHaber->yayina_baslama_zamani = $time; 
+0

不能使用類型爲stdClass的對象作爲數組錯誤發生 –

+0

@YağızMuğulkoç顯示,創建'$ sondakikaHaberler'聽起來是不是你認爲它是 – RiggsFolly

+1

@YağızMuğulkoç這是因爲該行的'$ sonDakikaHaber ['yayina_baslama_zamani代碼'] = $ time;','$ sonDakikaHaber'是數據庫中的一個結果對象,而不是數組。可以使用'$ sonDakikaHaber-> yayina_baslama_zamani = $ time'或者使用一個實際的數組來存儲它。 – Oldskool

1

您可以嘗試

$time = date('H:i', strtotime($sonDakikaHaber->yayina_baslama_zamani)); 

確保,您的日期字段不爲空,並在正確的格式。格式()將會拋出錯誤標識爲空和不正確的格式。另外,如果你想使用format()方法,你將不得不將它轉換成datetime對象。

+0

我試過這種方法,但不能使用stdClass類型的對象,因爲發生了數組錯誤 –

+0

您是否嘗試打印$ sonDakikaHaber-> yayina_baslama_zamani? – VipindasKS

0

最簡單的方法是對我們date()strtotime()記得日期時間從數據庫中作爲一個字符串,而不是一個PHP DateTime對象返回,所以你需要的是字符串轉換爲使用strtotime()

您一個可用的時間戳正在發生數組錯誤,也許代碼應該是

$sondakikaHaberler->yayina_baslama_zamani = 
     date('H:i' strtotime($sondakikaHaberler->yayina_baslama_zamani));