如何获取当月截至当前日期的所有日期?PHP技术咨询
获取当月截至当前日期的日期列表解决方案
你的代码能生成指定月份的全部有效日期,但未限制到当前日期,只需添加截止日期的判断即可实现需求:
修改后的代码
$month = 12; $year = 2022; $currentYear = date('Y'); $currentMonth = date('m'); $currentDay = date('d'); // 获取指定月份的最后一天 $lastDayOfMonth = date('t', mktime(0, 0, 0, $month, 1, $year)); // 确定循环的截止日期:如果是当前年月则到今日,否则到当月最后一天 $endDay = ($year == $currentYear && $month == $currentMonth) ? $currentDay : $lastDayOfMonth; $list = []; for ($d = 1; $d <= $endDay; $d++) { $time = mktime(12, 0, 0, $month, $d, $year); // 过滤掉无效日期(如4月31日这类不存在的日期) if (date('m', $time) == $month) { $list[] = date('Y-m-d', $time); } } // 输出结果示例 print_r($list);
关键修改说明
- 新增当前系统日期的获取,用于判断指定年月是否为当前月份
- 通过
date('t')获取指定月份的最后一天,避免硬编码31天的问题 - 动态设置循环的截止日:当前月份则截止到今日,其他月份则截止到当月最后一天
- 保留原代码的有效日期过滤逻辑,确保生成的日期都属于指定月份
内容的提问来源于stack exchange,提问作者Display
相关产品推荐
相关产品推荐

