Python 节假日计算:使用第三方库计算节假日

2023-04-01 00:00:00 第三方 计算 节假日

要使用第三方库在 Python 中计算节假日,你可以使用 python-dateutil 库。这个库提供了一个名为 relativedelta 的工具,可以在日期之间计算差异,例如计算两个日期之间相差的天数或月数。

以下是一个例子,演示如何使用 python-dateutil 库来计算给定日期是否为中国的节假日:

from dateutil.relativedelta import relativedelta
import datetime

def is_holiday(date):
    # 判断是否为周末
    if date.weekday() >= 5:
        return True

    # 判断是否为国家法定节假日
    holidays = [
        (1, 1),    # 元旦
        (5, 1),    # 劳动节
        (10, 1),   # 国庆节
    ]
    for holiday in holidays:
        if date.month == holiday[0] and date.day == holiday[1]:
            return True

    # 判断是否为春节
    spring_festival_start = datetime.datetime(2023, 1, 31)
    spring_festival_end = datetime.datetime(2023, 2, 6)
    if spring_festival_start <= date <= spring_festival_end:
        return True

    # 判断是否为清明节
    qingming_festival_start = datetime.datetime(2023, 4, 3)
    qingming_festival_end = datetime.datetime(2023, 4, 5)
    if qingming_festival_start <= date <= qingming_festival_end:
        return True

    # 其他节日自行添加判断条件

    return False

# 测试
date1 = datetime.date(2023, 3, 25)
date2 = datetime.date(2023, 5, 1)
delta = relativedelta(date2, date1)
for i in range(delta.days + 1):
    date = date1 + datetime.timedelta(days=i)
    if is_holiday(date):
        print(f"{date} 是节假日")

在上述代码中,我们定义了一个名为 is_holiday 的函数,用于判断给定日期是否为中国的节假日。其中,我们首先判断日期是否为周末(即星期六或星期日),如果是,则返回 True;接着判断日期是否为国家法定节假日,如果是,则返回 True;最后,我们添加了两个特定的节日——春节和清明节的判断条件,如果日期在这两个节日期间,也会被认为是节假日。最后,我们使用 relativedelta 工具计算两个日期之间的差异,遍历所有日期并检查它们是否为节假日。如果是,我们就打印出该日期。

相关文章