引言: 在日常工作中。常常会碰到相似的场景。须要计算在某个时间段内的工作日以及确定某天是否为工作日,这里的介绍的工具包将很好的解决问题。

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: 计算若干工作日之后的日期

from business_calendar import Calendar, MO, TU, WE, TH, FR

import datetime

date1 = 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, FR

import datetime

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

# normal calendar, no holidays

cal = 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的包是很强大了,基本覆盖了我们关于假期的需求,大家能够自行尝试一下怎样使用。

如有问题。也能够反馈给我。

同一时候。也很欢迎大家关注我的个人blog: http://blog.csdn.net/blueheart20

最终究竟了,万恶的切割线.......

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

Python工作日类库Busines Holiday介绍的更多相关文章

  1. Python常用的库简单介绍一下

    Python常用的库简单介绍一下fuzzywuzzy ,字符串模糊匹配. esmre ,正则表达式的加速器. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable ...

  2. 【.NET调用Python脚本】C#调用python requests类库报错 'module' object has no attribute '_getframe' - IronPython 2.7

    最近在开发微信公众号,有一个自定义消息回复的需求 比如用户:麻烦帮我查询一下北京的天气? 系统回复:北京天气,晴,-℃... 这时候需要根据关键字[北京][天气],分词匹配需要执行的操作,然后去调用天 ...

  3. python中multiprocessing.pool函数介绍_正在拉磨_新浪博客

    python中multiprocessing.pool函数介绍_正在拉磨_新浪博客     python中multiprocessing.pool函数介绍    (2010-06-10 03:46:5 ...

  4. Python IDE Spyder的简单介绍

    最近深度学习发展非常迅猛,大有一统江湖的趋势.经过一段时间学习,发现自己对这种神奇的玄学非常感兴趣,希望能够进一步的研究.而这种研究性学科单纯地看论文比较难以明白,所以希望能够跟进大牛们写的代码深入学 ...

  5. python学习第二讲,pythonIDE介绍以及配置使用

    目录 python学习第二讲,pythonIDE介绍以及配置使用 一丶集成开发环境IDE简介,以及配置 1.简介 2.PyCharm 介绍 3.pycharm 的安装 二丶IDE 开发Python,以 ...

  6. python nose测试框架全面介绍十---用例的跳过

    又来写nose了,这次主要介绍nose中的用例跳过应用,之前也有介绍,见python nose测试框架全面介绍四,但介绍的不详细.下面详细解析下 nose自带的SkipTest 先看看nose自带的S ...

  7. Python文件和目录模块介绍:glob、shutil、ConfigParser

    glob模块 查找符合特定规则的文件路径名,路径名可以使用绝对路径也可以使用相对路径.查找文件会使用到三个通配符,星号*,问号?和中括号[],其中"*"表示匹配0~n个字符, &q ...

  8. python nose测试框架全面介绍七--日志相关

    引: 之前使用nose框架时,一直使用--logging-config的log文件来生成日志,具体的log配置可见之前python nose测试框架全面介绍四. 但使用一段时间后,发出一个问题,生成的 ...

  9. python nose测试框架全面介绍六--框架函数别名

    之前python nose测试框架全面介绍二中介绍了nose框架的基本构成,但在实际应该中我们也会到setup_function等一系列的名字,查看管网后,我们罗列下nose框架中函数的别名 1.pa ...

随机推荐

  1. getAllResponseHeaders() 必须放到onload里面

    <html><head> <meta charset="utf-8"> <title>test</title> < ...

  2. python request post上传文件额外注意点

    通用用法 但上图的字段名,类型需要根据不同接口填写,如某服务接口: 因而对应的上传代码如下: # 输出参数:请求响应报文import requestsrequest_url = 'https://XX ...

  3. ubuntu安装wine

    1.安装源 sudo add-apt-repository ppa:wine/wine-builds sudo apt-get update 2.安装wine sudo apt-get install ...

  4. POJ 1258 + POJ 1287 【最小生成树裸题/矩阵建图】

    Farmer John has been elected mayor of his town! One of his campaign promises was to bring internet c ...

  5. 基于SAAJ的客户端

    概述 SAAJ - SOAP with Attachments API for JAVA 结构图如下: 正文 1. 如何获取soap请求的关键参数 关键的参数有四个: xmlns - xml命名空间如 ...

  6. POJ2068 Nim 博弈论 dp

    http://poj.org/problem?id=2068 博弈论的动态规划,依然是根据必胜点和必输点的定义,才明白过来博弈论的dp和sg函数差不多完全是两个概念(前者包含后者),sg函数只是mex ...

  7. 通过现有数据导出新表SQL

    Date: 20140217 Auth: JIN 需求: 导出一个表的两个列的表的SQL语句(包含数据) 方法:创立一个临时表 mysql> desc kw_keywords;+-------- ...

  8. JavaScript 巧学巧用

    关于 微信公众号:前端呼啦圈(Love-FED) 我的博客:劳卜的博客 知乎专栏:前端呼啦圈 前言 由于工作和生活上的一些变化,最近写文章的频率有点下降了,实在不好意思,不过相信不久就会慢慢恢复过来, ...

  9. 在u-boot中添加命令

    转:http://www.embedu.org/Column/Column464.htm 作者:曾宏安,华清远见嵌入式学院讲师. u-boot是嵌入式系统中广泛使用的一种bootloader.它不仅支 ...

  10. RACLE 错误 12899 处理, oracle 11g 更改字符集

    工作需要,安装装了oracle 11g,在导入其他机器上的备份数据的时间,发生一个错误: IMP-00019: 由于 ORACLE 错误 12899 而拒绝行IMP-00003: 遇到 ORACLE ...