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