为python dateutil添加工作日逻辑和改进的数据类型灵活性。

bdateutil的Python项目详细描述


将业务日逻辑和改进的数据类型灵活性添加到Python DATUTIL。 100%向后兼容python dateutil,只需替换dateutil 使用bdateutil导入。

http://img.shields.io/travis/ryanss/bdateutil.svghttp://img.shields.io/coveralls/ryanss/bdateutil.svg

示例用法

# Test if a date is a business day>>>frombdateutilimportisbday>>>isbday(date(2014,1,1))True# Date parameters are no longer limited to datetime objects>>>isbday("2014-01-01")True>>>isbday("1/1/2014")True>>>isbday(1388577600)# Unix timestamp = Jan 1, 2014True# Take into account U.S. statutory holidays>>>importholidays>>>isbday("2014-01-01",holidays=holidays.US())False# Increment date by two business days>>>frombdateutilimportrelativedelta>>>date(2014,7,3)+relativedelta(bdays=+2)datetime.date(2014,7,7)# Any arguments that take a date/datetime object now accept# strings/unicode/bytes in any encoding and integer/float timestamps.# All dateutil functions now also take an optional `holidays` argument# for helping to work with business days.>>>"2014-07-03"+relativedelta(bdays=+2,holidays=holidays.US())datetime.date(2014,7,8)# Determine how many business days between two dates>>>relativedelta("2014-07-07",date(2014,7,3))relativedelta(days=+4,bdays=+2)# Take into account Canadian statutory holidays>>>fromholidaysimportCanada>>>relativedelta('2014-07-07','07/03/2014',holidays=Canada())relativedelta(days=+4,bdays=+1)# Get a list of the next 10 business days starting 2014-01-01>>>frombdateutilimportrrule,BDAILY>>>list(rrule(BDAILY,count=10,dtstart=date(2014,1,1)))# Take into account British Columbia, Canada statutory holidays>>>list(rrule(BDAILY,count=10,dtstart=date(2014,1,1),holidays=Canada(prov='BC')))

安装

最新的稳定版本始终可以通过pip安装或更新:

$ pip install bdateutil

如果上述操作失败,请改用Easy_安装:

$ easy_install bdateutil

文档

本节仅概述bdateutil的附加功能。为了 关于python dateutil提供的特性的完整文档请参见 文档位于https://labix.org/python-dateutil

bdateutil与python dateutil完全向后兼容。你可以替换 dateutil在整个项目和 一切都将继续运行,但您可以访问 以下附加功能:

  1. 使用时,可以使用新的可选关键字参数bdays relativeDelta向DateTime对象添加或删除时间。
>>>date(2014,1,1)+relativedelta(bdays=+5)date(2014,1,8)
  1. 当将两个datetime参数传递给relativeDelta时,结果是 relativeDelta对象将包含一个带有数字的bdays属性 日期时间参数之间的工作日。
>>>relativedelta(date(2014,7,7),date(2014,7,3))relativedelta(days=+4,bdays=+2)
  1. 另一个新的可选关键字参数holidays在以下情况下可用 使用relativeDelta支持bdays功能。没有假期 工作日仅使用工作日计算。通过传递 节假日更准确和有用的工作日计算可以是 执行。python包holidays.py作为 bdateutil的需求,这是生成 假期。
>>>frombdateutilimportrelativedelta>>>fromholidaysimportUnitedStates>>>date(2014,7,3)+relativedelta(bdays=+2)datetime.date(2014,7,7)>>>date(2014,7,3)+relativedelta(bdays=+2,holidays=UnitedStates())datetime.date(2014,7,8)
  1. 一个新函数isbday,如果参数 如果是周末或 假期。option关键字参数holidays增加了 考虑到一组特定的假期。
>>>frombdateutilimportisbday>>>isbday(date(2014,1,1))True>>>isbday("2014-01-01")True>>>isbday("1/1/2014")True>>>isbday(1388577600)# Unix timestamp = Jan 1, 2014True# Take into account U.S. statutory holidays>>>importholidays>>>isbday("2014-01-01",holidays=holidays.US())False
  1. 除了datetimedate类型之外,relativeDelta还可以工作 所有字符串/字节,不考虑编码和整数/浮点时间戳。 它通过在 parse函数被修改为接受许多不同的 类型多于字符串,包括日期/日期时间 修改。这允许您对对象调用parse(dt) 不考虑类型,并确保返回DateTime对象。
>>>parse(date(2014,1,1))datetime.date(2014,1,1)>>>parse(datetime(2014,1,1))datetime.datetime(2014,1,1,0,0)>>>parse("2014-01-01")datetime.datetime(2014,1,1,0,0)>>>parse("1/1/2014")datetime.datetime(2014,1,1,0,0)>>>parse(1388577600)datetime.datetime(2014,1,1,0,0)>>>relativedelta('2014-07-07','2014-07-03')relativedelta(days=+4,bdays=+2)>>>1388577600+relativedelta(days=+2)date(2014,1,3)
  1. rrule特性有一个新的BDAILY选项用作freq参数。 这将创建一个生成工作日的生成器。瑞尔现在也会 接受影响 BDAILY仅限频率。现有的^ {< CD23>}和^ {CD24}} 数组现在可以作为任何类似日期/日期时间的类型传递。
# Get a list of the next 10 business days starting 2014-01-01>>>frombdateutilimportrrule,BDAILY>>>list(rrule(BDAILY,count=10,dtstart=date(2014,1,1)))# Get a list of all business days in January 2014, taking into account# Canadian statutory holidays>>>importholidays>>>list(rrule(BDAILY,dtstart="2014-01-01",until="2014-01-31",holidays=holidays.Canada()))
  1. 可以使用导入快捷方式来导入bdateutil特性 比python dateutil简单一点。但是,从bdateutil导入时使用 python dateutil使用的longer方法仍然可以保持100% 向后兼容。
>>># Importing relativedelta from the original python-dateutil package>>>fromdateutil.relativedeltaimportrelativedelta>>># This method works with bdateutil>>>frombdateutil.relativedeltaimportrelativedelta>>># bdateutil also provides an easier way>>>frombdateutilimportrelativedelta

开发版本

最新的开发版本可以直接从github安装:

$ pip install --upgrade https://github.com/ryanss/bdateutil/tarball/master

运行测试

$ pip install flake8
$ flake8 bdateutil/*.py tests.py --ignore=F401,F403
$ python tests.py

覆盖范围

$ pip install coverage
$ coverage run --omit=*site-packages* tests.py
$ coverage report

贡献

IssuesPull Requests总是受欢迎的。

许可证

代码和文档根据麻省理工学院的许可证提供 (见LICENSE)。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在未知属性上的PUT和POST失败会引发不同的行为   java无法使GWTRPC正常工作   java如何在安卓中更改一个特定视图的主题?   机器学习为什么改变了java中等式的两面?   java继承和重定向标准输出   java为什么Clojure中嵌套循环/重复速度慢?   使用JavaParser解析Java代码并查找父节点的语句类型   java读取类的方法并在arraylist中存储Web服务的路径名   java模板聚合匹配和投影一个没有id的字段   java为什么给定数组不返回false   java如何链接JLabel和JSpinner以调整大小   在java中,当过滤器只返回一个对象时,如何使用流和过滤器将值填充到对象中   java为什么使用getInstance   如何得到我的。运行java命令的bat文件