如何通过YEAR和MONTH参数获取对应月份的最后一天日期
不同开发语言实现方案
核心思路均为避开手动判断月份天数、闰年2月等边界情况,通过日期类自带的偏移逻辑自动计算当月最后一天。
Python 实现
方法1:使用datetime模块(无额外依赖)
from datetime import date, timedelta YEAR = 2021 MONTH = 9 # 处理12月的边界情况,12月的下个月为下一年1月 if MONTH == 12: next_month_first = date(YEAR + 1, 1, 1) else: next_month_first = date(YEAR, MONTH + 1, 1) last_day = next_month_first - timedelta(days=1) # 格式化为dd.mm.yyyy输出 result = last_day.strftime("%d.%m.%Y") print(result) # 输出 30.09.2021
方法2:使用calendar内置模块(代码更简洁)
import calendar YEAR = 2021 MONTH = 9 # monthrange返回值为(当月第一天周几编号, 当月总天数) _, last_day_num = calendar.monthrange(YEAR, MONTH) result = f"{last_day_num:02d}.{MONTH:02d}.{YEAR}" print(result) # 输出 30.09.2021
JavaScript 实现
注意JavaScript的Date对象月份从0开始计数,传入参数时不需要减1,直接利用「下个月第0天自动回退到当月最后一天」的特性计算:
const YEAR = 2021; const MONTH = 9; const lastDay = new Date(YEAR, MONTH, 0); // 补前导零后格式化为dd.mm.yyyy const result = `${String(lastDay.getDate()).padStart(2, '0')}.${String(lastDay.getMonth() + 1).padStart(2, '0')}.${lastDay.getFullYear()}`; console.log(result); // 输出 30.09.2021
Java 实现(Java 8+)
使用java.time内置时间类实现:
import java.time.LocalDate; import java.time.format.DateTimeFormatter; public class LastDayOfMonth { public static void main(String[] args) { int YEAR = 2021; int MONTH = 9; LocalDate lastDay = LocalDate.of(YEAR, MONTH, 1) .plusMonths(1) .minusDays(1); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy"); String result = lastDay.format(formatter); System.out.println(result); // 输出 30.09.2021 } }
Linux Shell 实现
直接调用系统date命令计算:
YEAR=2021 MONTH=9 last_day=$(date -d "$YEAR-$MONTH-01 +1 month -1 day" +%d.%m.%Y) echo $last_day # 输出 30.09.2021
内容的提问来源于stack exchange,提问作者Pointer
相关产品推荐
相关产品推荐

