引言
大家在日常工作中,經常會碰到類似的場景,需要計算在某個時間段內的工作日以及確定某天是否為工作日,這里的介紹的工具包將很好的解決這個問題。

1. 工具包Business Holiday介紹
其提供了非常簡單易用的計算工作日的接口,并允許用戶指定特定日期為假期,從而將其從當前的工作日中剔除。
項目主頁: https://pypi.Python.org/pypi/business_calendar/
文檔首頁: http://py-business-calendar.readthedocs.io/en/latest/
2. 功能分析與介紹
Case 1: 計算在某個時間段之內的工作日天數
from business_calendar import Calendar, MO, TU, WE, TH, FRimport datetimedate1 = datetime.datetime(2013,1,10)# normal calendar, no holidayscal = Calendar()date2 = datetime.datetime(2013,3,20)print('%s days between %s and %s' % (cal.busdaycount(date1, date2), date1, date2))功能描述: 計算2013/1/10之后的25天之內的工作日天數:
49 days between 2013-01-10 00:00:00 and 2013-03-20 00:00:00
Case 2: 計算若干工作日之后的日期
from business_calendar import Calendar, MO, TU, WE, TH, FRimport datetimedate1 = datetime.datetime(2013,1,10)cal = Calendar()date2 = cal.addbusdays(date1, 25)print("The specified date will be %s" % date2)功能描述: 計算25個工作日之后的日期
The specified date will be 2013-02-14 00:00:00
Case 3: 結合假期,以及星期的概念,計算工作日:
from business_calendar import Calendar, MO, TU, WE, TH, FRimport datetimedate1 = datetime.datetime(2013,1,10)# normal calendar, no holidayscal = Calendar(workdays=[MO,TU,WE,TH], holidays=['2013-01-17'])date2 = datetime.datetime(2013,3,20)print('%s days between %s and %s' % (cal.busdaycount(date1, date2), date1, date2))功能描述: 指定周一到周四工作,1.17日是公眾假期,計算會有多少個工作日:
38 days between 2013-01-10 00:00:00 and 2013-03-20 00:00:00
3. 功能分析
在該類庫中,有workday和businessday的概念:
addbusydays(date, offset) 其將考慮holidays公休假的因素  addworkdays(date, offset) 忽略公休假的因素  busdaycount(date1, date2) 計算兩個時間點直接的工作日  range(date1, date2) 返回工作日列表, 考慮假期因素  isworkday(date) 是否是工作日,忽略公休假的因素  isbusday(date) 是否工作日,考慮公休假  isHoliday(date) 是否是假日4. 總結
business_holiday的包是非常強大了,基本覆蓋了我們關于假期的需求,大家可以自行嘗試一下如何使用。
新聞熱點
疑難解答