代码之家  ›  专栏  ›  技术社区  ›  FreeMemory

假日日历、文件格式等

  •  10
  • FreeMemory  · 技术社区  · 15 年前

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

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

    我知道没有 琐碎的 在所有的假期里都这样做。例如,虽然圣诞节总是12月25日,但出于联邦政府的目的,有时我们 庆祝 (即,这不是工作日)12月24日,有时是26日。类似地,犹太人的节日(例如)每年迁移一次(相对于公历)。

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

    4 回复  |  直到 10 年前
        1
  •  6
  •   Renier    10 年前

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

    注:

    一些假期是 state region-related 而不是 country-related .

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

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

        2
  •  2
  •   Alex Martelli    15 年前

    经典 holiday.py 模块(旧的一部分 dateutil 包——足够大,可以依靠模块 time 而不是相对最近的 datetime !)擅长日历计算(包括犹太历翻译),但不处理持久性(读或写)。

    正如@brian的回应所暗示的, ics 是文件中“日历”的主要格式(其中包括假日文件)。要用python读取和写入ICS文件,可以使用 iCalendar 包,它精确地执行该任务,或者 vobject 这是一个更广泛的包,支持vCard和vCalendar格式(包括iCalendar)的范围。

        3
  •  2
  •   hruske    13 年前

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

    更多见 http://community.kde.org/KDE_PIM/KHolidays

        4
  •  0
  •   S.Lott    15 年前

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

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

    “庆祝”业务(因为25日是星期六,所以将圣诞节改为24日)是查看美国联邦假日列表的简单事项。

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

    当然,各州的情况也各不相同。但这是一个开始。