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
相关产品推荐
相关产品推荐

