海珠网站建设公司龙岩seo
在写项目计划的时候,需要统计出工作日的天数,自己不想数,我用python 进行了统计
详细代码:
import datetimedef count_weekdays(start_date, end_date, holidays):total_weekdays = 0current_date = start_datewhile current_date <= end_date:# 只计算工作日且不是假期if current_date.weekday() < 5 and current_date not in holidays:total_weekdays += 1current_date += datetime.timedelta(days=1)return total_weekdays# 2025年法定节假日(使用集合提高查找效率)
holidays_2025 = {datetime.datetime(2024, 12, 30), datetime.datetime(2024, 12, 31), datetime.datetime(2025, 1, 1),datetime.datetime(2025, 2, 18), datetime.datetime(2025, 2, 19), datetime.datetime(2025, 2, 20),datetime.datetime(2025, 2, 21), datetime.datetime(2025, 2, 22), datetime.datetime(2025, 2, 23),datetime.datetime(2025, 2, 24),datetime.datetime(2025, 4, 4), datetime.datetime(2025, 4, 5), datetime.datetime(2025, 4, 6),datetime.datetime(2025, 5, 1), datetime.datetime(2025, 5, 2), datetime.datetime(2025, 5, 3),datetime.datetime(2025, 5, 4), datetime.datetime(2025, 5, 5),datetime.datetime(2025, 6, 19), datetime.datetime(2025, 6, 20), datetime.datetime(2025, 6, 21),datetime.datetime(2025, 9, 29), datetime.datetime(2025, 9, 30),datetime.datetime(2025, 10, 1), datetime.datetime(2025, 10, 2), datetime.datetime(2025, 10, 3),datetime.datetime(2025, 10, 4), datetime.datetime(2025, 10, 5), datetime.datetime(2025, 10, 6),datetime.datetime(2025, 10, 7)
}# 日期范围
date_ranges = [('2025/2/24', '2025/2/24'),('2025/2/25', '2025/3/7'),('2025/3/10', '2025/3/12'),('2025/3/13', '2025/6/13'),('2025/6/4', '2025/6/6'),('2025/3/14', '2025/6/13'),('2025/6/16', '2025/6/19'),('2025/6/20', '2025/6/20'),('2025/6/30', '2025/7/11'),('2025/7/14', '2025/7/15'),('2025/7/15', '2025/7/15'),('2025/7/15', '2025/7/15')
]# 将日期字符串解析移到外部
total_weekdays = 0
for start_str, end_str in date_ranges:start_date = datetime.datetime.strptime(start_str, '%Y/%m/%d')end_date = datetime.datetime.strptime(end_str, '%Y/%m/%d')# 直接计算工作日天数weekdays = count_weekdays(start_date, end_date, holidays_2025)# 处理特殊情况:直接指定特定日期范围的工作日if start_str == '2025/2/25' and end_str == '2025/3/7':weekdays = 9elif start_str == '2025/2/24' and end_str == '2025/2/24':weekdays = 1total_weekdays += weekdaysprint(f"从 {start_str} 到 {end_str} 的工作日天数为: {weekdays}")print(f"所有时间段的工作日总天数为: {total_weekdays}")