Holiday("Good Friday", type='moveable',
base='gregorian_easter', delta_days=-2)
Holiday("Easter Monday", etc, delta_days=1)
# Some states in Australia used to have Easter Tuesday (no kidding)
Holiday("Easter Tuesday", etc, delta_days=2)
“基本”概念可用于迎合农历新年,实际上是任何与需要特殊程序计算的基本日期有偏差的假期。
当“固定”日期是星期六或星期日时,所谓的“静态”假期并不固定,甚至可能消失(没有其他休息日):
# Americans will get a day off on Friday 31 Dec 2010
# because 1 Jan 2011 is a Saturday.
Holiday("New Year's Day", type='fixed',
day=1, month=JAN, sat_adj=-1, sun_adj=????)
# Australia observes ANZAC Day on the day, with no day off
# if the fixed date falls on a weekend.
Holiday("ANZAC Day", type='fixed', day=25, month=APR, sat_adj=0, sun_adj=0)
# Two consecutive "fixed" holidays is OK; three would need re-thinking.
# Australia again:
Holiday("Christmas Day", type='fixed', day=25, month=DEC, sat_adj=2, sun_adj=1)
Holiday("Boxing Day", type='fixed', day=26, month=DEC, sat_adj=2, sun_adj=2)
from pandas.tseries.holiday import USFederalHolidayCalendar
cal = USFederalHolidayCalendar()
holidays = cal.holidays(start='2014-01-01', end='2014-12-31').to_pydatetime()
if datetime.datetime(2014,01,01) in holidays:
print True
一些一般性评论:
我不认为 @ast4 真的意味着“第 n 个月算法的第 n 周的第 n 天”。 “第 n 个月的第 n 周”的概念令人震惊(就像“ISO 日历”)。我从未见过用“第 n 周”定义的假期。 Martin Luther King Day 是“每月第 N 个工作日”类型假期的示例:
美国没有与复活节有关的假期。定义并不难:
“基本”概念可用于迎合农历新年,实际上是任何与需要特殊程序计算的基本日期有偏差的假期。
当“固定”日期是星期六或星期日时,所谓的“静态”假期并不固定,甚至可能消失(没有其他休息日):
我敢肯定,有一些方法可以指定上述规则不适用的假期……欢迎任何此类消息。