跳转到主要内容

全球节假日和工作日助手和工具包。

项目描述

Workalendar

license pypi conda

概述

Workalendar是一个Python模块,提供了处理日历、列出法定/宗教节假日以及提供与工作日相关的计算函数的类。

安装

使用pip

pip install workalendar

使用conda

conda install -c conda-forge workalendar

额外依赖项

注意:自v16.0.0起新增

如果您想要处理的日历需要天文计算(例如需要春分或太阳术语的亚洲日历),Workalendar将为1991年至2051年的年份范围提供预计算的值。

但是,如果您想使用天文库自己计算日历,则需要安装以下额外依赖项

pip install workalendar[astronomy]

如果您之前已安装了skyfieldskyfield-data包,它们将被用于计算日历。如果您想利用“天文缓存”并最终从中受益于性能提升,您必须首先卸载这些包以回退到预计算的文件。

状态

这个库已准备好投入生产,尽管我们可能要提醒最终用户:一些日历可能不是最新的,并且这个库(目前)还没有涵盖地球上所有的国家。

如果您发现任何错误或希望添加日历,请参阅贡献文档

使用示例

>>> from datetime import date
>>> from workalendar.europe import France
>>> cal = France()
>>> cal.holidays(2012)
[(datetime.date(2012, 1, 1), 'New year'),
 (datetime.date(2012, 4, 9), 'Easter Monday'),
 (datetime.date(2012, 5, 1), 'Labour Day'),
 (datetime.date(2012, 5, 8), 'Victory in Europe Day'),
 (datetime.date(2012, 5, 17), 'Ascension Day'),
 (datetime.date(2012, 5, 28), 'Whit Monday'),
 (datetime.date(2012, 7, 14), 'Bastille Day'),
 (datetime.date(2012, 8, 15), 'Assumption of Mary to Heaven'),
 (datetime.date(2012, 11, 1), "All Saints' Day"),
 (datetime.date(2012, 11, 11), 'Armistice Day'),
 (datetime.date(2012, 12, 25), 'Christmas')]
>>> cal.is_working_day(date(2012, 12, 25))  # it's Christmas
False
>>> cal.is_working_day(date(2012, 12, 30))  # it's Sunday
False
>>> cal.is_working_day(date(2012, 12, 26))
True
>>> cal.add_working_days(date(2012, 12, 23), 5)  # 5 working days after Xmas
datetime.date(2012, 12, 31)

要获取更完整的文档和高级使用方法,请访问官方workalendar文档

外部依赖

Workalendar 将需要您使用 Python 3.7+。

Workalendar 在 Python 3.7、3.8、3.9、3.10、3.11 上进行了测试,并在 Linux(Ubuntu)、Mac OS 和 Windows 上使用 Github actions 进行测试。

条件依赖

截至 v15.0.0

  • 如果您使用 *Nix 和 Python 3.7、3.8,则需要包 backports.zoneinfo
  • 如果您使用 Windows 和 Python 3.7、3.8,则还需要包 tzdata(与 backports.zoneinfo 一起)。
  • 如果您使用 Python 3.9+,将使用 stdlib 包 zoneinfo

测试

CI 状态

Github action status

要运行测试,只需使用 pip install tox 安装 tox 并从命令行运行

tox

即可。

可用的日历

欧洲

  • 奥地利
  • 白俄罗斯
  • 比利时
  • 保加利亚
  • 开曼群岛
  • 克罗地亚
  • 塞浦路斯
  • 捷克共和国
  • 丹麦
  • 爱沙尼亚
  • 欧洲中央银行
  • 芬兰
  • 法国
  • 法国(阿尔萨斯 / 穆斯林)
  • 格鲁吉亚
  • 德国
  • 希腊
  • 根西岛
  • 匈牙利
  • 冰岛
  • 爱尔兰
  • 意大利
  • 拉脱维亚
  • 立陶宛
  • 卢森堡
  • 马耳他
  • 摩纳哥
  • 荷兰(可选,包括学校假期和狂欢节)
  • 挪威
  • 波兰
  • 葡萄牙
  • 罗马尼亚
  • 俄罗斯
  • 塞尔维亚
  • 斯洛伐克
  • 斯洛文尼亚
  • 西班牙(安达卢西亚、阿拉贡、卡斯蒂利亚和莱昂、卡斯蒂利亚-拉曼查、加那利群岛、埃斯特雷马杜拉、加利西亚、巴利阿里群岛、拉里奥哈、马德里自治区、穆尔西亚、纳瓦拉、阿斯图里亚斯、巴斯克地区、坎塔布里亚、瓦伦西亚自治区)
  • 瑞典
  • 瑞士(阿劳、阿彭策尔内里hoden、阿彭策尔外里hoden、伯尔尼、巴塞尔-兰茨格特、巴塞尔城、弗里堡、日内瓦、格拉鲁斯、格劳宾登、汝拉、卢塞恩、讷沙泰尔、尼德瓦尔登、奥瓦尔登、圣加伦、沙夫豪森、索洛图恩、施维茨、图尔高、提契诺、乌里、沃、沃州、瓦莱、楚格、苏黎世)
  • 土耳其
  • 乌克兰
  • 联合王国(包括北爱尔兰、苏格兰及其所有领地)

美洲

  • 阿根廷
  • 巴巴多斯
  • 巴西(所有州、城市,以及除了维尼亚亚市的银行交易)
  • 加拿大(包括省级和地区性假期)
  • 智利
  • 哥伦比亚
  • 萨尔瓦多
  • 墨西哥
  • 巴拿马
  • 巴拉圭
  • 美利坚合众国
    • 50个州的州级假期
    • 美属萨摩亚
    • 伊利诺伊州芝加哥
    • 关岛
    • 马萨诸塞州萨福克县
    • 加利福尼亚州教育、伯克利、旧金山、西好莱坞
    • 佛罗里达州法律和佛罗里达州巡回法院、迈阿密-戴德
    • 联邦储备系统

亚洲

  • 中国
  • 香港
  • 以色列
  • 日本
  • 日本银行
  • 哈萨克斯坦
  • 马来西亚
  • 菲律宾
  • 卡塔尔
  • 新加坡
  • 韩国
  • 台湾

大洋洲

  • 澳大利亚(包括其不同的州)
  • 马绍尔群岛
  • 新西兰

非洲

  • 阿尔及利亚
  • 安哥拉
  • 贝宁
  • 科特迪瓦
  • 肯尼亚
  • 马达加斯加
  • 莫桑比克
  • 尼日利亚
  • 圣多美和普林西比
  • 南非
  • 突尼斯

还有更多(希望如此!)

注意事项

请注意,某些日历并非100%准确。最常见的例子是伊斯兰历,其中一些计算出的假日并不完全与宗教当局决定的官方同一天一致,并且这可能会因国而异。只要可能,请尽量使用相关当局提供的官方数据调整您的结果。

一些国家的一些假日基于恒星历和春分点。这些是根据前30年和后30年计算的,以避免进行大量计算和依赖。

贡献

请阅读我们的 contributing.md 文档,了解您如何为 workalendar 做出贡献。欢迎提交拉取请求。

历史

该项目于2013年诞生,作为对“我们如何计算这个日期 + 5个工作日?”这一问题的回答。它最初是PeopleDoc的票据应用中计算SLA的用例,起初是一个为法国和美国的开源库。

感谢PeopleDoc,该项目得到了发展,并最终成为了一个全球性的库,得到了数十名贡献者的帮助。

截至2021年6月,该项目已迁移到自己的组织。

许可证

本库遵循MIT许可证的条款。请查阅LICENSE文件以获取更多详情。

项目详情


发布历史 发布通知 | RSS源

下载文件

下载您平台对应的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

workalendar-17.0.0.tar.gz (153.5 kB 查看哈希值)

上传时间 源代码

构建分发

workalendar-17.0.0-py3-none-any.whl (210.7 kB 查看哈希值)

上传时间 Python 3

支持