📌  相关文章
📜  Python程序获取两个日期之间的总工作日(1)

📅  最后修改于: 2023-12-03 15:19:35.624000             🧑  作者: Mango

Python程序获取两个日期之间的总工作日

在开发中,我们经常需要计算某段时间内的工作日数量,例如计算一段时间内的出勤天数或者计算一个任务的工作日时长等等。本文将介绍如何使用Python编写一个函数,以获取两个日期之间的总工作日数量。

输入格式

我们需要传入两个日期,起始日期和终止日期。可以使用Python内置的datetime模块来表示日期和时间。

from datetime import datetime

start_date = datetime(2021, 10, 1)
end_date = datetime(2021, 10, 15)

在这里,我们创建了两个datetime对象以表示2021年10月1日和2021年10月15日。

计算工作日数量

接下来,我们需要编写一个函数来计算两个日期之间的总工作日数量。在这里,我们定义工作日为周一到周五(不包括周末)。

import datetime

def get_workdays(start_date, end_date):
    weekdays = [4, 5, 6, 0, 1]  # 星期一到星期五的日期
    days = (end_date - start_date).days + 1  # 总天数
    weeks = days // 7  # 整周数量
    days -= weeks * 2  # 减去整周的周末
    start_weekday = start_date.weekday()  # 起始日期的星期几
    end_weekday = end_date.weekday()  # 终止日期的星期几
    
    # 减去起始日期之前的周末
    if start_weekday in weekdays:
        days -= 1 - weekdays.index(start_weekday)
    # 减去终止日期之后的周末
    if end_weekday in weekdays:
        days -= weekdays.index(end_weekday)

    return days

这个函数中包含以下步骤:

  1. 定义了一个包含工作日(星期一到星期五)的列表。
  2. 计算两个日期之间的总天数。
  3. 计算整周数量,并减去整周的周末,这里我们假设周六和周日是周末,因此一周减去两天。
  4. 计算起始日期和终止日期的星期几,并减去起始日期之前和终止日期之后的周末。
测试

现在我们来测试一下我们的函数,计算2021年10月1日到2021年10月15日之间的工作日数量。

start_date = datetime(2021, 10, 1)
end_date = datetime(2021, 10, 15)
workdays = get_workdays(start_date, end_date)
print(f"工作日数量:{workdays}")

输出结果为:

工作日数量:10
总结

通过以上的介绍,我们可以看到,使用Python编写一个获取两个日期之间的总工作日的函数是非常容易的。如果您在开发中需要计算工作日数量,则可以使用这个函数。当然,如果您有其他需求,也可以对代码进行相应的修改。