假日日历,文件格式,等

时间:2009-12-31 17:08:59

标签: python calendar

我正在寻找一种方法来确定一个特定的日期是否是一个“假期”,给定一些假期日历。

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

我认识到,对于所有年份的所有假期,没有琐碎的方法。例如,虽然圣诞节总是在12月25日,但出于联邦政府的目的,有时我们会在12月24日(有时是26日)庆祝(即,不是工作日)。类似的,犹太节日(例如)每年迁移(相对于公历)。

我不是在寻找每个假期的计算方法。我想知道更多是否有一些可接受的,标准的文件格式,按年份列出假期,如果有的话,如果有任何模块 - 在Python中,特别是,但我很灵活 - 了解如何阅读所述格式。同样,文件格式将定义周末 - 通常是周六和周日,但在某些地区可能是周五和周六等。

4 个答案:

答案 0 :(得分:6)

Mozilla在.ics格式中有一组user-contributed holiday files。这可能会让你开始。不幸的是,他们会去不同的日期范围。 iCalShare还有.ics格式的假日日历。

注意:

  

有些假期是stateregion-related,而不是country-related

我在过去发现分层方法有效。例如检查城市假日日历,然后状态日历,然后国家日历。

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

答案 1 :(得分:2)

经典holiday.py模块(旧版dateutil包的一部分 - 足够依赖于模块time而不是相对较新的datetime!)做得很好日历计算的工作(包括犹太人的公历翻译),但不涉及持久性(阅读或写作)。

正如@ Brian的回复所示,ics是文件中“日历”的主要格式(并且有这样的格式的假日文件等)。要在Python中读取和编写ics文件,您可以使用iCalendar包来完成该任务,或vobject,这是一个支持vCard和vCalendar格式范围的更广泛的包(包括的iCalendar)。

答案 2 :(得分:2)

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

详情请见http://community.kde.org/KDE_PIM/KHolidays

答案 3 :(得分:0)

阅读日历计算:http://emr.cs.uiuc.edu/home/reingold/calendar-book/index.shtml

美国假期的各种规则详细提供,包括算法。

“庆祝”业务(将圣诞节假期移至24日,因为周五25日落下)只需查看美国联邦假期列表即可。

http://www.opm.gov/Operating_Status_Schedules/fedhol/2009.asp

当然,个别国家和企业也各不相同。但这是一个开始。