PHP如何为数组内所有日期时间值批量增加5天时长
问题根因
date_add()的第一个参数要求传入DateTime对象实例,你直接传入的$row["date_pulled"]是从数据库读取的字符串类型时间值,类型不匹配,所以代码无法正常运行。
可行实现方案
方案1:修正现有PHP逻辑
先把时间字符串转为DateTime对象,执行加5天操作后再格式化为需要的时间字符串存入数组:
if (mysqli_num_rows($result) > 0) { while($row = mysqli_fetch_assoc($result)) { // 将字符串格式时间转为DateTime实例 $dateObj = date_create($row["date_pulled"]); // 执行加5天操作 date_add($dateObj, date_interval_create_from_date_string("5 days")); // 默认格式化为YYYY-MM-DD HH:MM:SS格式存入数组,如果你的时分秒分隔符为横杠,把format里的冒号替换为横杠即可 $future[] = $dateObj->format('Y-m-d H:i:s'); } }
方案2:SQL层直接计算(推荐)
不需要在PHP循环中逐条处理时间,直接在查询语句中使用MySQL内置的日期函数完成计算,能减少PHP侧的运算逻辑,性能更好:
首先修改你的查询SQL,直接返回加5天后的时间值:
SELECT *, DATE_ADD(date_pulled, INTERVAL 5 DAY) AS date_pulled_add5 FROM 你的对应表名;
之后PHP循环中直接读取计算好的字段值存入数组即可:
if (mysqli_num_rows($result) > 0) { while($row = mysqli_fetch_assoc($result)) { $future[] = $row["date_pulled_add5"]; } }
内容的提问来源于stack exchange,提问作者DD1229
相关产品推荐
相关产品推荐

