Python计算所有工作日的方法可分为以下两类,推荐优先使用权威且功能强大的库:
一、使用Pandas库计算工作日
Pandas提供了bdate_range
函数,可快速获取指定日期范围内的工作日列表。示例代码如下:
import pandas as pd
# 获取2019年8月7日至31日的工作日
e = pd.bdate_range('2019-08-07', '2019-08-31')
print(e.date.tolist())
该函数默认排除周末,若需排除法定节假日,可结合holidays
库实现。
二、使用Workalendar库计算工作日
Workalendar支持多国节假日规则,适合处理复杂场景。示例代码如下:
from workalendar.asia import China
# 判断2024年1月1日是否为工作日
(China().is_working_day('2024-01-01')) # False
# 获取2024年全年节假日
holidays = China().holidays(2024)
print(holidays)
该库可轻松扩展至其他国家,如法国、美国等。
三、自定义实现(排除周末)
若仅需排除周末,可使用datetime
库结合迭代实现:
import datetime
def get_workdays(year, month):
last_day = datetime.date(year, month + 1, 1) - datetime.timedelta(days=1)
workdays = 0
for day in range(1, last_day.day + 1):
current_day = datetime.date(year, month, day)
if current_day.weekday() < 5: # 周一至周五
workdays += 1
return workdays
# 示例:计算2023年1月工作日
print(get_workdays(2023, 1))
此方法未考虑法定节假日,仅排除周末。
总结 :推荐使用Pandas或Workalendar库,前者简洁高效,后者功能全面。若仅需基础实现,可结合datetime
库完成。