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

安装

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

pip install holidays  

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

HolidayBase() 方法

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

语法 -

holidays.HolidayBase(years=[], expand=True, observed=True, prov=None, state=None)

参数 -

它接受以下参数。

  • years - 这是一个可迭代的整数列表,用于指定是否应预生成假期对象。只有在设置为 False 时才能使用此参数。
  • expand - 它表示一个布尔值,指示是否要在新年添加假期。默认情况下为 true。
  • observed - 当我们将观察到的布尔值设置为 True 时,它将包括在周末放假的假期的观察日。
  • prov - 它是一个字符串值,指定具有独特宪法假期的省份。默认值为(澳大利亚='ACT',加拿大='ON',新西兰=None)。
  • state - 它表示具有独特宪法假期的州。默认值为(美国=None)。

让我们了解以下示例 -

示例 -

from datetime import date  
import holidays  
# Select country  
USA_holidays_list = holidays.US()  
# printing all the holiday of USA year 2020  
for p in holidays.US(years = 2020).items():  
    print(p)

输出:

(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

from datetime import date  
import holidays  
  
# Select country  
India_holidays_list = holidays.India()  
  
# printing all the holiday of India year 2020  
for p in holidays.India(years = 2020).items():  
    print(p) 

输出:

(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:

from datetime import date  
import holidays  
# Select country  
uk_holidays_list = holidays.UnitedKingdom()  
# printing all the holiday of India year 2020  
for p in holidays.UnitedKingdom(years = 2021).items():  
    print(p)

输出:

(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)')

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

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

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

示例 -

from datetime import date  
import holidays  
  
# Select country  
uk_holidays = holidays.UnitedKingdom()  
date1 = '25-25-2021'  
  
j = date1 in uk_holidays  
  
# Cheking whether given data is a holiday  
if j == True:  
    print("Yes: ")  
    print (uk_holidays.get(date1))  
  
else:  
    print("No Holiday")

输出:

Yes: 
Christmas Day

为印度添加自定义假期

以下表中有许多国家没有包括,但幸运的是我们可以为特定国家添加自定义假期。在下面的示例中,我们将为印度添加自定义假期。

示例 -

import holidays  
  
add_holidays = holidays.HolidayBase()  
print('28-03-2021' in add_holidays) # checking for holiday  
  
# here we are adding Holiday without description  
add_holidays.append('28-03-2021')  
  
print('28-03-2021' in add_holidays) # True  
  
# Add Holiday with description  
add_holidays.append({'28-03-2021':'Holi: Festival of Colors, Holiday'})  
print(add_holidays.get('28-03-2021'))

输出:

False
True
Holi: Festival of Colors, Holiday

说明:

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

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

假期库中可用的国家

以下是 holidays 库支持的国家。

国家缩写省/州
阿根廷AR
澳大利亚AUprov = ACT(默认)、NSW、NT、QLD、SA、TAS、VIC、WA
奥地利ATprov = B、K、N、O、S、ST、T、V、W(默认)
比利时BE
加拿大CAprov = AB、BC、MB、NB、NL、NS、NT、NU、ON(默认)、PE、QC、SK、YU
哥伦比亚CO
捷克CZ
丹麦DK
英格兰
欧洲中央银行ECB、TAR欧洲跨境自动实时总额清算系统(TARGET2)
芬兰FI
法国FRAMétropole(默认)、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
北爱尔兰
挪威NO
波兰PL
葡萄牙PT
葡萄牙扩展PTE葡萄牙加上大多数人都休假的额外天数
苏格兰
斯洛文尼亚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
英国UK
美国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
威尔士

标签: Tkinter教程, Tkinter安装, Tkinter库, Tkinter入门, Tkinter学习, Tkinter入门教程, Tkinter, Tkinter进阶, Tkinter指南, Tkinter学习指南, Tkinter进阶教程, Tkinter编程