PHP中date_format函数报错:参数需为DateTimeInterface而非字符串
解决date_format()参数类型不匹配的报错
报错原因很明确:date_format()要求第一个参数必须是DateTimeInterface类型的对象,但你从数据库获取的date_created是字符串类型,类型不匹配导致了警告。
下面是三种可行的解决方法:
方法一:将字符串转为DateTime对象后格式化
先把数据库返回的日期字符串转换成DateTime实例,再调用format()方法处理:
foreach ($news as $new) { // 注意:第一个参数要和数据库中date_created的存储格式一致,默认datetime类型是Y-m-d H:i:s $dateObj = DateTime::createFromFormat('Y-m-d H:i:s', $new['date_created']); // 输出格式化后的日期 echo $dateObj->format("d/m/Y H:i"); }
方法二:用date() + strtotime()组合格式化
如果你的日期字符串是标准格式(比如MySQL的datetime格式),可以直接用strtotime()把字符串转成时间戳,再传给date()函数:
foreach ($news as $new) { echo date("d/m/Y H:i", strtotime($new['date_created'])); }
方法三:在SQL查询时直接格式化
省去PHP端的处理,直接在SQL里用MySQL的DATE_FORMAT()函数把日期格式好再返回:
SELECT `id`, `title`, `main_image`, `services`, DATE_FORMAT(`date_created`, '%d/%m/%Y %H:%i') AS `date_created` FROM `news` ORDER BY `id` DESC
这样PHP拿到的date_created已经是你需要的格式,直接输出即可。
内容的提问来源于stack exchange,提问作者M S
相关产品推荐
相关产品推荐

