PHP根据指定月份和日期获取大于当前时间含年份的完整时间
光看标题,有些小伙伴是不是感觉比较绕,所以才要记录下来,欢迎交流!
先看举例
先举例两个来说明
1、指定月日是【12月20日】,那么大于当前时间的下一个【12月20日】就是【2025年12月20日】
2、指定月日是【12月24日】,那么大于当前时间的下一个【12月24日】就是【2024年12月24日】
代码示例
为了获取指定月份和日期大于当前时间的包含年份的完整时间,可以使用PHP中的 DateTime 类来处理日期和时间,我们据此写个函数,接受月份和日期作为参数,然后返回一个DateTime对象,表示下一次出现该月该日的时间。
<?php
/**
* 获取下一次执行清零的日期 - 根据【月日】
*
* @param $month 月
* @param $day 日
*/
function getNextTimeByMonthDay( $month = 0, $day = 0 ){
if( empty($month) || empty($day) ){
return error(-1, '参数错误');
}
// 获取当前时间
$now = new DateTime();
// 创建目标日期时间对象
$targetDate = DateTime::createFromFormat('Y-m-d', sprintf('%d-%02d-%02d', $now->format('Y'), $month, $day));
// 如果目标日期在过去或今天,则将年份加1
if( $targetDate <= $now ){
$targetDate->modify('+1 year');
}
return $targetDate;
}
使用示例
$month = 12; // 12月
$day = 20; // 20日
$nextTime = getNextTimeByMonthDay($month, $day);
echo "下一个 {$month}月{$day}日 的时间是: " . $nextTime->format('Y-m-d H:i:s') . "\n";
打印结果是:2025-12-20 11:54:10