📅  最后修改于: 2023-12-03 15:18:51.854000             🧑  作者: Mango
在日常工作中,我们经常需要计算每个月最后一个工作日的日期。
Python 中通过 datetime 模块及其相关函数可以非常方便地完成这个任务。本文将介绍如何使用 Python 计算一年中每个月的最后一个工作日。
我们需要编写一个 Python 程序,对于一个给定的年份,计算出该年每个月的最后一个工作日。
接下来是具体的 Python 代码实现。
import datetime
import pandas as pd
我们需要导入 datetime 模块和 pandas 模块。
def is_workday(date):
weekno = date.weekday()
return weekno < 5
这个函数判断一个日期是否为工作日。如果是工作日返回 True,否则返回 False。
def last_workday(year, month):
lastday = datetime.date(year, month + 1, 1) - datetime.timedelta(days=1)
while not is_workday(lastday):
lastday -= datetime.timedelta(days=1)
return lastday
这个函数接收一个年份和一个月份,返回该月的最后一个工作日。
对于一个月的最后一天,我们先用 datetime.date(year, month + 1, 1) - datetime.timedelta(days=1)
计算出该月最后一天的日期。
然后,我们使用一个 while 循环逐次检查该月的最后一天是否为工作日,如果不是则往前推一天,直到找到第一个工作日为止。
year = 2022
result = []
for month in range(1, 13):
lastday = last_workday(year, month)
result.append(lastday.strftime("%Y-%m-%d"))
df = pd.DataFrame({"month": range(1, 13), "last_workday": result})
print(df.to_markdown(index=False))
这个代码片段计算了给定年份(2022 年)中每个月的最后一个工作日,并使用 pandas 将结果输出为 Markdown 表格。
运行上面的 Python 代码,可以得到以下 Markdown 格式的输出结果:
| month | last_workday |
|--------:|:--------------|
| 1 | 2022-01-31 |
| 2 | 2022-02-28 |
| 3 | 2022-03-31 |
| 4 | 2022-04-29 |
| 5 | 2022-05-31 |
| 6 | 2022-06-30 |
| 7 | 2022-07-29 |
| 8 | 2022-08-31 |
| 9 | 2022-09-30 |
| 10 | 2022-10-31 |
| 11 | 2022-11-30 |
| 12 | 2022-12-30 |
可以看到,这个程序计算出了 2022 年每个月的最后一个工作日,并将结果输出为 Markdown 表格。
本文介绍了如何使用 Python 计算一年中每个月的最后一个工作日。具体地,我们使用了 datetime 模块和 pandas 模块,实现了两个函数来判断工作日和计算最后一个工作日。最后,我们将计算结果输出为 Markdown 表格。
有了本文的指导,你也可以很方便地在 Python 环境中计算出任意年份的每个月的最后一个工作日,希望对你的工作和学习有所帮助!