2016-04-15 19 views
-1

データベースから配列配列を入力します。 'YayinaBaşlamaZamanı'という列はdatetime列です。私はdatetimeオブジェクトから時間を取得するためにこのコードを試しましたが、 "文字列のメンバー関数format()を呼び出す"というエラーが発生しています。このエラーを修正するにはどうすればよいですか?laravelのdatetimeから時間を取得するにはどうすればよいですか?

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

ありがとうございました。

+0

は日時0000-00-00 00:00:00ですか?配列誤差がYağızMuğulkoçショー@ '$ sondakikaHaberler'を作成するコードを – aimme

答えて

2

データベースから(平文で保存されている)日付をDateTimeオブジェクトにする必要があります。だから、買ってあげる:

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

それとも、名前空間クラスにしている場合は、DateTimeの目の前で\を追加します。

またはあなたはまた、ページの上部にuse DateTimeを追加することができます代わりに\を追加しますinfront of DateTime

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

これで、フォーマットメソッドを呼び出すことができます。

コメントに投稿された2次エラーに関しては、結果オブジェクト$sonDakikaHaberを配列に変換することはできません。だから、変更します。この中へ

$sonDakikaHaber['yayina_baslama_zamani'] = $time; 

$sonDakikaHaber->yayina_baslama_zamani = $time; 
+0

は '[それはあなたがそれが原因でライン' $ sonDakikaHaberであることYağızMuğulkoç@ –

+0

を発生したとして – RiggsFolly

+1

と思われるものではないようですねyayina_baslama_zamaniのタイプはstdClassのオブジェクトを使用することはできません'] = $ time; '、' $ sonDakikaHaber'は配列ではなくデータベースの結果オブジェクトです。 '$ sonDakikaHaber-> yayina_baslama_zamani = $ time'を使うか、それを格納するために実際の配列を使用してください。 – Oldskool

1

をあなたは

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

を確認して試すことができ、あなたの日付フィールドがnull、正しい形式ではありません。 format()はnullと不正な形式の両方のエラーIDをスローします。また、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)); 
関連する問題