PHP中如何自动设置指定日期的当日起止时间(无需硬编码)
实现指定日期的当日零点与结束时间
不用硬编码具体时间的话,PHP里有几种简洁可靠的实现方式:
方法一:使用strtotime函数的语义化时间表达式
strtotime支持多种语义化时间字符串,无需手动拼接固定时间:
$date = '03/04/2023'; // 当日零点:直接解析日期字符串,默认指向当日00:00 $start = strtotime($date); // 当日23:59:59:先取次日零点再减1秒,避免漏掉最后一秒的数据 $finish = strtotime($date . ' +1 day -1 second');
如果仅需精确到23:59(忽略秒数),也可以直接写:
$finish = strtotime($date . ' 23:59');
方法二:使用DateTime类(推荐,更易维护)
面向对象的DateTime类处理日期时间更规范,尤其适合复杂场景或需要时区支持的情况:
$dateStr = '03/04/2023'; // 初始化DateTime对象,默认对应当日零点 $startDate = new DateTime($dateStr); // 显式设置为00:00:00,代码可读性更强 $startDate->setTime(0, 0, 0); $start = $startDate->getTimestamp(); // 获取当日结束时间:克隆起始日期后,先加1天再减1秒 $finishDate = clone $startDate; $finishDate->modify('+1 day')->modify('-1 second'); $finish = $finishDate->getTimestamp();
如果需要输出格式化后的日期字符串,直接调用format方法即可:
echo $startDate->format('m/d/Y H:i:s'); // 输出 03/04/2023 00:00:00 echo $finishDate->format('m/d/Y H:i:s'); // 输出 03/04/2023 23:59:59
内容的提问来源于stack exchange,提问作者Jake
相关产品推荐
相关产品推荐

