我从数据库中填充数组。名为"Yayina Başlama Zamanı"的列是日期时间列。我已经尝试过使用此代码从datetime对象获取时间,但出现了"对字符串调用成员函数format()"错误。如何修复此错误?
foreach ($sondakikaHaberler as $sonDakikaHaber){
$dt = $sonDakikaHaber->yayina_baslama_zamani;
$time = $dt ->format('H:i');
$sonDakikaHaber['yayina_baslama_zamani'] = $time;
}
谢谢你的帮助。
必须首先将数据库中的日期(以纯文本形式存储)转换为DateTime对象。所以你会得到:
$dt = new DateTime($sonDakikaHaber->yayina_baslama_zamani);
或者,如果你在一个有名称空间的类中,在DateTime:前面添加一个'
或者您也可以在页面顶部添加use DateTime
,而不是在DateTime
前面添加'
$dt = new 'DateTime($sonDakikaHaber->yayina_baslama_zamani);
然后你可以调用上面的格式化方法
关于第二个错误(如注释中所示),您无法将结果对象$sonDakikaHaber
转换为数组。所以改变:
$sonDakikaHaber['yayina_baslama_zamani'] = $time;
进入:
$sonDakikaHaber->yayina_baslama_zamani = $time;
您可以使用内置的日期功能,
date('H:i', strtotime("2021-04-29 03:30:00")
您可以尝试
$time = date('H:i', strtotime($sonDakikaHaber->yayina_baslama_zamani));
请确保您的日期字段不是空的并且格式正确。format()将抛出null和不正确格式的错误id。此外,如果要使用format()方法,则必须将其转换为datetime对象。
对我们来说,最简单的方法是date()
和strtotime()
记住,日期时间是作为字符串而不是PHP datetime对象从数据库返回的,所以您需要使用strtotime()
将该字符串转换为可用的时间戳
当你得到一个数组错误,也许代码应该是
$sondakikaHaberler->yayina_baslama_zamani =
date('H:i' strtotime($sondakikaHaberler->yayina_baslama_zamani) );