PHP中如何将指定时间值添加到日期变量得到完整日期时间结果
PHP日期与时间字符串合并实现方案
以下提供三种不同场景的实现方式:
1. 固定格式字符串拼接(性能最优)
如果可以确定$start_date的格式固定为Y-m-d H:i:s,直接截取日期部分拼接即可:
$start_date = '2021-09-02 00:00:00'; $start_time = '16:56:00'; // 截取前10位日期部分拼接时间 $result = substr($start_date, 0, 10) . ' ' . $start_time;
- 优点:写法简单、执行效率最高
- 缺点:依赖输入格式固定,无格式校验能力
2. 时间戳解析拼接(兼容性好)
如果输入日期格式可能存在变动(比如分隔符为/、没有时分秒后缀等),用内置日期解析函数处理更稳妥:
$start_date = '2021-09-02 00:00:00'; $start_time = '16:56:00'; $result = date('Y-m-d', strtotime($start_date)) . ' ' . $start_time;
- 优点:兼容多种常见日期输入格式,不需要提前校验日期字符串结构
- 缺点:性能略低于纯字符串处理
3. DateTime类标准实现(最健壮)
面向对象的标准实现,支持后续对日期做更多操作,自带格式校验:
$start_date = '2021-09-02 00:00:00'; $start_time = '16:56:00'; // 解析原始日期 $dateObj = DateTime::createFromFormat('Y-m-d H:i:s', $start_date); // 拆分时间为时分秒三个参数,设置到日期对象中 $dateObj->setTime(...explode(':', $start_time)); // 格式化输出 $result = $dateObj->format('Y-m-d H:i:s');
- 优点:内置格式校验,支持后续任意日期运算、格式调整,不会出现字符串处理的边界错误
- 缺点:写法相对繁琐,性能略低于前两种方案
内容的提问来源于stack exchange,提问作者noob_sadge
相关产品推荐
相关产品推荐

