Python 假日日历、文件格式等

Python 假日日历、文件格式等,python,calendar,Python,Calendar,我正在寻找一种方法来判断给定的日期是否是“假日”,给定一些假日日历 具体来说,您可能会说is_holiday(datetime.date,“USA”),这将回答给定日期是否是名为“USA”的日历的假日 我认识到,在所有的节日里,在所有的年份里,都没有一种简单的方法可以做到这一点。例如,虽然圣诞节总是12月25日,但出于联邦政府的目的,有时我们在12月24日庆祝(即,它不是营业日),有时在26日庆祝。类似地,犹太节日(例如)每年都迁移(相对于公历) 我不是在寻找每个假期的计算结果。我更想知道是否有

我正在寻找一种方法来判断给定的日期是否是“假日”,给定一些假日日历

具体来说,您可能会说
is_holiday(datetime.date,“USA”)
,这将回答给定日期是否是名为“USA”的日历的假日

我认识到,在所有的节日里,在所有的年份里,都没有一种简单的方法可以做到这一点。例如,虽然圣诞节总是12月25日,但出于联邦政府的目的,有时我们在12月24日庆祝(即,它不是营业日),有时在26日庆祝。类似地,犹太节日(例如)每年都迁移(相对于公历)

我不是在寻找每个假期的计算结果。我更想知道是否有一些被接受的标准文件格式可以按年度列出假期,如果是的话,是否有任何模块——特别是Python模块,但我很灵活——能够理解如何读取所述格式。类似地,文件格式将定义周末-通常是周六和周日,但在某些地区可能是周五和周六,等等。

Mozilla有一套in.ics格式。这可能会让你开始。不幸的是,他们的约会范围不同。也有假日日历的格式

注意:

有些假日是与州相关的,而不是与国家相关的

我在过去发现分层方法是有效的。e、 检查城市假日日历,然后是州日历,然后是国家日历

有一个用于读取.ics文件的Python模块,名为(也是on)。不幸的是,我不能保证它的质量。

经典模块(旧的
dateutil
包的一部分——旧到可以依赖模块
time
而不是相对较新的
datetime
!)在日历计算方面做得很好(包括犹太公历翻译)但不涉及持久性(阅读或写作)


正如@Brian的回答所表明的,
ics
是文件中“日历”的主要格式(除其他外,还有假日文件采用这种格式)。例如,要用Python读取和写入ics文件,您可以使用软件包,该软件包正好完成该任务,或者是支持vCard和vCalendar格式(包括iCalendar)范围更广的软件包。

读取日历计算:

详细介绍了美国假期的各种规则,并给出了算法

“庆祝”业务(将圣诞节改为24日,因为25日是星期六)只需查看美国联邦假日列表即可


当然,各州各不相同,企业也是如此。但这只是一个开始。

另一个好的、全面的假日数据来源是KDE的kholidays:


更多信息请参见

关于州/地区相关协议的约定。。。在我的一个小例子中,“USA”不是国家名称,它只是“日历”的名称。可以很容易地被称为“is_holiday”(datetime.date,“Hello World”)我也这么认为。我过去必须做的是实施一个“退后”策略,因此我的日历中有一个层次结构的概念。e、 我的纽约日历知道它的“父”是美国日历等等。然而,我对计算假期不感兴趣。不同的地区、不同的宗教和不同的规则使得这是一项非常困难的任务。我很乐意存储多个不同的文件,每个文件代表一个不同的“日历”。我在寻找一些文件规范,这些文件规范不需要我自己的。ics是一个开始,但似乎太多了,因为它还用于“事件”等@freemory:“我在寻找一些文件规范”。好。更新你的问题,让它说得非常清楚。@S.洛特:也许读最后一段?“我不是在寻找每个假期的计算结果。我更想知道是否有一些被接受的标准文件格式可以按年度列出假期”(重点补充)。@FreeMemory:请更新您的问题,以便非常清楚地说明这一点。你的问题说明了很多事情。也许太多了。这就是重点。如果有人(即我)没有得到这个问题,那么可能需要澄清一下。我只是一个小样本,但有可能不仅仅是我自己。我认为这里没有任何含糊不清的地方。我(显然)是一个小样本:-)