首页 > 解决方案 > 在 Python 中查找任何给定年份的 6 月和 12 月的最后营业日期

问题描述

我想找到 2019 年 6 月和 12 月的最后一个工作日。我下面的代码给了我上个月和当月的最后一个工作日。理想情况下,我想要一个允许我输入年份和月份的代码,它会告诉我输入的月份和年份的最后一个工作日。

我希望我的输出在 2019 年 6 月和 2019 年 12 月是这样的

2906 3112

希望有人可以在这里帮助我,谢谢

from pandas.tseries.offsets import BMonthEnd
from datetime import date

d=date.today()

offset = BMonthEnd()

#Last day of current month
current_month = offset.rollforward(d)
print(current_month)

#Last day of previous month
last_month = offset.rollback(d)
print(last_month)

标签: python-3.xcalendar

解决方案


这是一个函数,它将查找给定月份的最后一个工作日并将其格式化为给定格式的字符串

import datetime

def last_weekday(year, month):
    # Add a month
    if month == 12:
        month = 1
        year += 1
    else:
        month += 1

    d = datetime.date(year, month, 1)

    # Subtract a day
    d -= datetime.timedelta(days=1)

    # Subtract more days if we have a weekend
    while d.weekday() >= 5:
        d -= datetime.timedelta(days=1)

    return '{:02d}{:02d}'.format(d.month, d.day)

# Examples:
last_weekday(2019, 6)  # -> '0628'
last_weekday(2019, 12) # -> '1231'

推荐阅读