Python Holidays 模块

17 Mar 2025 | 5 分钟阅读

在本教程中,我们将学习一个有趣的 Python 库,名为 holidays,它可以确定特定日期给定年份的节假日。它会返回给定日期的具体结果。我们只需要传入国家名称。然而,它只能检测固定的节假日,例如 圣诞节、新年 等。

安装

在终端输入以下命令并按回车键。

导入 holidays 模块以检查它是否已安装。

HolidayBase() 方法

holidays 模块提供 HolidayBase() 方法,用于检测特定日期的节假日。让我们看看以下语法。

语法 -

参数 -

它接受以下参数。

  • years - 这是一个可迭代的整数列表,指定 holidays 对象应该预先生成。只有当设置为 False 时才能使用此参数。
  • expand - 它表示一个布尔值,表示是否在新年添加节假日。默认情况下为 True。
  • observed - 当我们将 observed 布尔值设置为 True 时,它将包括落在周末的节假日的实际观察日。
  • prov - 这是一个字符串值,指定一个具有独特宪法节假日的省份。默认值(Australia='ACT', Canada='ON', NewZealand=None)。
  • state - 它表示一个具有独特宪法节假日的州。(默认 - United States = None)。

让我们理解以下示例 -

示例 -

输出

(datetime.date(2020, 1, 1), "New Year's Day")
(datetime.date(2020, 1, 20), 'Martin Luther King Jr. Day')
(datetime.date(2020, 2, 17), "Washington's Birthday")
(datetime.date(2020, 5, 25), 'Memorial Day')
(datetime.date(2020, 7, 4), 'Independence Day')
(datetime.date(2020, 7, 3), 'Independence Day (Observed)')
(datetime.date(2020, 9, 7), 'Labor Day')
(datetime.date(2020, 10, 12), 'Columbus Day')
(datetime.date(2020, 11, 11), 'Veterans Day')
(datetime.date(2020, 11, 26), 'Thanksgiving')
(datetime.date(2020, 12, 25), 'Christmas Day')

示例 - 2

输出

(datetime.date(2021, 1, 14), 'Makar Sankranti / Pongal')
(datetime.date(2021, 1, 26), 'Republic Day')
(datetime.date(2021, 8, 15), 'Independence Day')
(datetime.date(2021, 10, 2), 'Gandhi Jayanti')
(datetime.date(2021, 5, 1), 'Labour Day')
(datetime.date(2021, 12, 25), 'Christmas')

注意 - 正如我们在输出中看到的,holidays 模块只返回固定日期的节假日。

示例 - 3

输出

 (datetime.date(2021, 1, 1), "New Year's Day")
(datetime.date(2021, 1, 2), 'New Year Holiday [Scotland]')
(datetime.date(2021, 1, 4), 'New Year Holiday [Scotland] (Observed)')
(datetime.date(2021, 3, 17), "St. Patrick's Day [Northern Ireland]")
(datetime.date(2021, 7, 12), 'Battle of the Boyne [Northern Ireland]')
(datetime.date(2021, 8, 2), 'Summer Bank Holiday [Scotland]')
(datetime.date(2021, 11, 30), "St. Andrew's Day [Scotland]")
(datetime.date(2021, 12, 25), 'Christmas Day')
(datetime.date(2021, 12, 27), 'Christmas Day (Observed)')
(datetime.date(2021, 4, 2), 'Good Friday')
(datetime.date(2021, 4, 5), 'Easter Monday [England, Wales, Northern Ireland]')
(datetime.date(2021, 5, 3), 'May Day')
(datetime.date(2021, 5, 31), 'Spring Bank Holiday')
(datetime.date(2021, 8, 30), 'Late Summer Bank Holiday [England, Wales, Northern Ireland]')
(datetime.date(2021, 12, 26), 'Boxing Day')
(datetime.date(2021, 12, 28), 'Boxing Day (Observed)')

我们可以获取所需国家的节假日列表。

如何检查给定日期是否是节假日?

假设我们想检查一个特定日期是否是节假日。我们可以这样做。

示例 -

输出

Yes: 
Christmas Day

为印度添加自定义节假日

以下表格中遗漏了许多国家,但幸运的是,我们可以为特定国家添加自己的自定义节假日。在下面的示例中,我们将为印度添加自定义节假日。

示例 -

输出

False
True
Holi: Festival of Colors, Holiday

说明

在上面的代码中,我们首先导入了 date 和 holidays 模块。然后我们创建了 HolidayBase() 对象并检查给定日期是否包含节假日。它返回 False,因此我们添加了没有描述的自定义节假日。

在另一个语句中,我们添加了带有描述的节假日并打印了结果。

Holidays 库支持的国家

以下是 holidays 库支持的国家。

国家缩写省/州
阿根廷AR
澳大利亚AUprov = ACT (default), NSW, NT, QLD, SA, TAS, VIC, WA
奥地利ATprov = B, K, N, O, S, ST, T, V, W (default)
比利时BE
加拿大CAprov = AB, BC, MB, NB, NL, NS, NT, NU, ON (default), PE, QC, SK, YU
哥伦比亚CO
捷克CZ
丹麦DK
英格兰
EuropeanCentralBankECB,TAR泛欧自动实时全额付款系统 (TARGET2)
芬兰FI
法国FRAMétropole (default), Alsace-Moselle, Guadeloupe, Guyane, Martinique, Mayotte, Nouvelle-Calédonie, La Réunion, Polynésie Française, Saint-Barthélémy, Saint-Martin, Wallis-et-Futuna
德国DEBW, BY, BE, BB, HB, HH, HE, MV, NI, NW, RP, SL, SN, ST, SH, TH
匈牙利HU
爱尔兰IE
马恩岛
意大利ITprov = MI, RM
日本JP
墨西哥MX
荷兰NL
新西兰NZprov = NTL, AUK, TKI, HKB, WGN, MBH, NSN, CAN, STC, WTL, OTA, STL, CIT
北爱尔兰
挪威
波兰语PL
葡萄牙PT
PortugalExtPTE葡萄牙加上大多数人休假的额外天数
苏格兰
斯洛文尼亚SI
斯洛伐克SK
南非ZA
西班牙ESprov = AND, ARG, AST, CAN, CAM, CAL, CAT, CVA, EXT, GAL,
IBA, ICA, MAD, MUR, NAV, PVA, RIO
瑞典SE
瑞士CHprov = AG, AR, AI, BL, BS, BE, FR, GE, GL, GR, JU, LU,
NE, NW, OW, SG, SH, SZ, SO, TG, TI, UR, VD, VS, ZG, ZH
英国英国
美国USstate = AL, AK, AS, AZ, AR, CA, CO, CT, DE, DC, FL, GA,
GU, HI, ID, IL, IN, IA, KS, KY, LA, ME, MD, MH, MA, MI,
FM, MN, MS, MO, MT, NE, NV, NH, NJ, NM, NY, NC, ND, MP,
OH, OK, OR, PW, PA, PR, RI, SC, SD, TN, TX, UT, VT, VA,
VI, WA, WV, WI, WY
威尔士