2016-04-15 39 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));