天天看點

Python工作日類庫Busines Holiday介紹

引言: 在日常工作中。常常會碰到相似的場景。須要計算在某個時間段内的工作日以及确定某天是否為工作日,這裡的介紹的工具包将很好的解決問題。

Python工作日類庫Busines Holiday介紹

1. 工具包Business Holiday介紹

其提供了很easy易用的計算工作日的接口。并同意使用者指定特定日期為假期,進而将其從目前的工作日中剔除。

項目首頁: 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, FR

import datetime

date1 = datetime.datetime(2013,1,10)

# normal calendar, no holidays

cal = 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: 計算若幹工作日之後的日期

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: 結合假期,以及星期的概念,計算工作日:

cal = Calendar(workdays=[MO,TU,WE,TH], holidays=['2013-01-17'])

功能描寫叙述: 指定周一到周四工作。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的包是很強大了,基本覆寫了我們關于假期的需求,大家能夠自行嘗試一下怎樣使用。

如有問題。也能夠回報給我。

最終究竟了,萬惡的切割線.......

---------------------------------------------------------------------------------------------------------------