跳转到主要内容

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

项目描述

tests

Ruff

概述

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

历史

Calendra是从Workalendar分支出来的,旨在更易于扩展和内省,添加了Workalendar出于简单性考虑反对添加的接口。

Calendra能做什么,而Workalendar不能?

  • 为每个假日(如“8月的第三个星期一”)的“指定日期”提供描述。
  • 将假日的指定日期和观察日期区分开来,以便确定特定假日是在哪一天被观察到的。
  • 允许计算日历年度内假日的数量。
  • 将观察逻辑统一在核心代码中,而不是要求每个日历实现都要实现自己的。

状态

该项目已稳定并投入生产使用。Calendra遵循semver原则进行版本发布。

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

使用示例

>>> from datetime import date
>>> from calendra.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文档

外部依赖

Calendra已在setup.cfg中声明的Python版本上进行了测试。

测试

要运行测试,只需使用pip安装tox:pip install tox,然后在命令行中运行tox

可用日历

欧洲

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

美洲

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

亚洲

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

大洋洲

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

非洲

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

更多即将到来(希望如此!)

注意事项

请注意,某些日历可能不是100%准确。最常见的情况是伊斯兰历,其中一些计算的假期并不完全与宗教当局决定的官方日期相同,并且这可能会因国家而异。在可能的情况下,请尝试使用相关当局提供的官方数据调整您的结果。

一些国家的假期基于天文日历和春分。这些是根据前30年和后30年计算的,以避免大规模计算和依赖。

贡献

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

历史

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

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

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

许可证

本库根据MIT许可证的条款发布。请查阅LICENSE文件以获取更多信息。

项目详情


下载文件

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

源代码分发

calendra-7.9.1.tar.gz (182.9 kB 查看哈希值)

上传时间 源代码

构建分发

calendra-7.9.1-py3-none-any.whl (213.6 kB 查看哈希值)

上传时间 Python 3

由以下支持