在Python中确定日期是否为美国银行假日的最简单方法是什么?似乎有各种各样的日历和网络服务列出了各个国家的假期,但我没有找到任何特定于美国银行的信息。
在Python中确定日期是否为美国银行假日的最简单方法是什么?似乎有各种各样的日历和网络服务列出了各个国家的假期,但我没有找到任何特定于美国银行的信息。
Pandas软件包为此提供了方便的解决方案:
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
使用Python中的假期库。
pip install holidays
美国假日:
1. 检查日期是否为节假日。
from datetime import date
import holidays
# Select country
us_holidays = holidays.US()
# If it is a holidays then it returns True else False
print('01-01-2018' in us_holidays)
print('02-01-2018' in us_holidays)
# What holidays is it?
print(us_holidays.get('01-01-2018'))
print(us_holidays.get('02-01-2018'))
2. 列出美国的所有假期:
from datetime import date
import holidays
# Select country
us_holidays = holidays.US()
# Print all the holidays in US in year 2018
for ptr in holidays.US(years = 2018).items():
print(ptr)
你可以在我博客上列出的国家列表中找到任何你喜欢的国家的节假日。
我的节假日博客
Python节假日Github链接一些一般性的评论:
我认为@ast4并不是真正意思说“第n个月的第n周算法”。"第n个月的第n周"这个概念让人难以理解(就像“ISO日历”一样)。我从来没有见过一个假期是按照“第n周”定义的。马丁·路德·金日是“每月第n个工作日”类型的假期的例子:
MONDAY, ...., SATURDAY = range(7)
JAN, ....., DEC = range(1, 12)
Holiday("Martin L King's Birthday", type='floating',
ordinal=3, weekday=MON, month=JAN)
Holiday("Memorial Day", type='floating',
ordinal=-1, weekday=MON, month=MAY)
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)
我相信有一些假期的规定并不符合以上规则...欢迎任何此类消息。
确保日期不是以下日期中的任何一个: