如何获得一个月的最后一天?

新手上路,请多包涵

有没有办法使用 Python 的标准库轻松确定(即一个函数调用)给定月份的最后一天?

如果标准库不支持,dateutil 包是否支持?

原文由 Cristian 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

calendar.monthrange 提供以下信息:

日历。 月份范围(年、月)

返回指定 年份月份 的月份第一天的工作日和月份的天数。

 >>> import calendar
>>> calendar.monthrange(2002, 1)
(1, 31)
>>> calendar.monthrange(2008, 2)  # leap years are handled correctly
(4, 29)
>>> calendar.monthrange(2100, 2)  # years divisible by 100 but not 400 aren't leap years
(0, 28)

所以:

 calendar.monthrange(year, month)[1]

似乎是最简单的方法。

原文由 Blair Conrad 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果不想导入 calendar 模块,简单的两步功能也可以:

 import datetime

def last_day_of_month(any_day):
    # The day 28 exists in every month. 4 days later, it's always next month
    next_month = any_day.replace(day=28) + datetime.timedelta(days=4)
    # subtracting the number of the current day brings us back one month
    return next_month - datetime.timedelta(days=next_month.day)

输出:

 >>> for month in range(1, 13):
...     print(last_day_of_month(datetime.date(2022, month, 1)))
...
2022-01-31
2022-02-28
2022-03-31
2022-04-30
2022-05-31
2022-06-30
2022-07-31
2022-08-31
2022-09-30
2022-10-31
2022-11-30
2022-12-31

原文由 augustomen 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题