You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 12:54:19