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

PHP中如何为日期添加时间?代码报错求助

解决日期与时间拼接并转换为时间戳的问题

原代码存在的问题:

  • 变量名不匹配:定义的是$dateToday,但使用了未定义的$date_now
  • $timeToAddToDate未加引号:用户输入的时间是字符串类型,必须用引号包裹(比如'2:52')
  • modify方法用法错误:你要的是设置时间而非添加秒数,且单引号无法解析变量,即便要拼接也得用双引号
  • DateTime对象不能直接传给date()函数:date()需要的是时间戳,而modify返回的是DateTime对象

正确实现方案

方案1:直接拼接字符串转换

这种方式最简单,适合快速实现:

$dateToday = date('Y-m-d');
$timeToAddToDate = '2:52'; // 用户输入的时间字符串,需确保格式为H:i或h:i

// 拼接成完整的日期时间字符串
$fullDatetime = "$dateToday $timeToAddToDate";

// 转换为时间戳(直接用于数据库插入)
$timestamp = strtotime($fullDatetime);

// 若需要格式化后的字符串(如用于输出)
$formattedDatetime = date('Y-m-d H:i:s', $timestamp);
echo $formattedDatetime;

方案2:使用DateTime对象更严谨处理

如果需要更严谨的时间校验(比如用户输入的时间格式是否合法),推荐用DateTime的方法:

$dateToday = date('Y-m-d');
$timeToAddToDate = '2:52';

// 创建当日日期的DateTime对象
$dt = new DateTime($dateToday);

// 拆分小时和分钟
list($hour, $minute) = explode(':', $timeToAddToDate);

// 设置时间(自动处理小时、分钟的整数转换)
$dt->setTime((int)$hour, (int)$minute);

// 获取格式化后的字符串
$formattedDatetime = $dt->format('Y-m-d H:i:s');
// 获取时间戳
$timestamp = $dt->getTimestamp();

echo $formattedDatetime;

数据库插入注意事项

  • 直接用$timestamp插入timestamp类型字段即可,无需额外转换
  • 若使用PDO或MySQLi预处理语句,绑定参数时指定为整数类型更安全

内容的提问来源于stack exchange,提问作者WP Expert

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 13:25:58