You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 14:36:04