基于Python判斷節(jié)假日的幾種方式小結(jié)
最近在推進(jìn)信息安全巡檢的工作,按公司制度要求和信息安全標(biāo)準(zhǔn),要求按時(shí)對硬件設(shè)備、網(wǎng)絡(luò)、機(jī)房、應(yīng)用系統(tǒng)、數(shù)據(jù)庫等等做巡檢工作。為了保證達(dá)到信息安全的目標(biāo),要求在每周四和節(jié)假日的前一天對各類設(shè)備和系統(tǒng)進(jìn)行巡檢。
1、使用holidays庫判斷節(jié)假日
安裝 holidays庫
pip install holidays
使用它,Use it!~ 不要太簡單好嗎?
from datetime import date
cn_holidays = holidays.China()
def is_holiday(date):
return date in cn_holidays
print(is_holiday(date(2024,5,1)))
直接打印出來個(gè)Labor Day, WTF, 看來對中文的支持不算友好?當(dāng)然!有老哥已經(jīng)開發(fā)出來個(gè)Holiday-CN, 666啊。這個(gè)大家感興趣的可以去看看。
2、使用chinesecalendar判斷節(jié)假日
認(rèn)準(zhǔn)文檔:check if some day is holiday in China
判斷日期是否為工作日:chinese_calendar 提供了 is_workday() 函數(shù),可以判斷指定日期是否為工作日,包括周末、法定節(jié)假日等。
判斷日期是否為節(jié)假日:chinese_calendar 提供了 is_holiday() 函數(shù),可以判斷指定日期是否為中國的法定節(jié)假日。
import datetime # 判斷 2024年5月1號(hào) 是不是節(jié)假日 from chinese_calendar import is_holiday, is_workday labor_day = datetime.date(2024, 5, 1) print(is_workday(labor_day)) print(is_holiday(labor_day))
獲取節(jié)假日信息:chinese_calendar 提供了一系列函數(shù)用于獲取節(jié)假日的詳細(xì)信息,如 get_holiday_detail() 可以獲取指定日期的節(jié)假日名稱、類型和放假天數(shù)等信息。
# 或者在判斷的同時(shí),獲取節(jié)日名 import chinese_calendar as calendar # 也可以這樣 import on_holiday, holiday_name = calendar.get_holiday_detail(labor_day) print(on_holiday) print(holiday_name) print(calendar.Holiday.labour_day.value) # 還能判斷法定節(jié)假日是不是調(diào)休 import chinese_calendar print(chinese_calendar.is_in_lieu(datetime.date(2024, 5, 6))) print(chinese_calendar.is_in_lieu(datetime.date(2024, 5, 3)))
計(jì)算兩個(gè)日期之間的工作日天數(shù):chinese_calendar 提供了 get_workdays() 函數(shù),用以獲取兩個(gè)日期之間的工作日,變一下可以計(jì)算兩個(gè)日期之間的工作日天數(shù)。
# 計(jì)算兩個(gè)工作日之間的天數(shù)
print("距離五一你還要干%s天" % len(chinese_calendar.get_workdays(datetime.date(2024,4,15), datetime.date(2024,5,1))))
## 距離五一你還要干13天
3、調(diào)用接口或爬取數(shù)據(jù)判斷節(jié)假日
這個(gè)目前接口有很多個(gè),有免費(fèi)的也有收費(fèi)的。
當(dāng)然我們也可以自己寫爬蟲來獲取國家發(fā)布的節(jié)假日。然后,對里面的內(nèi)容做一些解析和處理就行了
import requests
from bs4 import BeautifulSoup
#獲取國務(wù)院節(jié)假日安排,包括調(diào)休
def getChineseHolidays(year):
#2024年放假安排url
url = "https://www.gov.cn/zhengce/content/202310/content_6911527.htm"
# Get方式獲取網(wǎng)頁數(shù)據(jù)
rep = requests.get(url)
rep.encoding = 'utf-8'
soup = BeautifulSoup(rep.text, 'html.parser')
pList = soup.find_all('p')
for item in pList:
p = item.text
if ':' in p and '放假' in p: #找出節(jié)日對應(yīng)的幾行內(nèi)容
print(p)
if __name__ == '__main__':
getChineseHolidays(2024)

4、結(jié)束語
大家請注意,使用 holidays 庫和 chinesecalendar 庫 可能不包含所有中國的公共假期,特別是那些具有地方性的假期或臨時(shí)宣布的假期。此外,由于中國的假期政策可能會(huì)隨著時(shí)間變化,因此建議定期檢查庫的更新。當(dāng)然,我們也能在執(zhí)行節(jié)假日判斷前,用代碼定期或執(zhí)行時(shí)更新庫。
用萬年歷接口的話,除非網(wǎng)絡(luò)問題、接口被修改或停止維護(hù)了,其它基本OK的。
以上就是基于Python判斷節(jié)假日的幾種方式小結(jié)的詳細(xì)內(nèi)容,更多關(guān)于Python判斷節(jié)假日的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
如何通過python實(shí)現(xiàn)IOU計(jì)算代碼實(shí)例
這篇文章主要介紹了如何通過python實(shí)現(xiàn)IOU計(jì)算代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
Python Queue模塊詳細(xì)介紹及實(shí)例
這篇文章主要介紹了Python Queue模塊詳細(xì)介紹及實(shí)例的相關(guān)資料,需要的朋友可以參考下2016-12-12
通過python3實(shí)現(xiàn)投票功能代碼實(shí)例
這篇文章主要介紹了通過python3實(shí)現(xiàn)投票功能代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
對pandas replace函數(shù)的使用方法小結(jié)
今天小編就為大家分享一篇對pandas replace函數(shù)的使用方法小結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05
Python畫圖小案例之多啦A夢叮當(dāng)貓超詳細(xì)注釋
在看了很多Python教程之后,覺得是時(shí)候做點(diǎn)什么小項(xiàng)目來練練手了,于是想來想去,用python寫了一個(gè)童年記憶的卡通人物哆啦A夢,代碼注釋無比詳細(xì)清楚,快來看看吧2021-09-09

