web-dev-qa-db-ja.com

米国の休日の検出

Pythonで日付が米国の銀行休業日であるかどうかを判断する最も簡単な方法は何ですか?さまざまな国の休日を一覧表示するさまざまなカレンダーやWebサービスがあるようですが、米国の銀行に固有のものは見つかりませんでした。

25
Cerin

いくつかの一般的なコメント:

@ ast4は実際には「n番目の月のアルゴリズムの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)

上記の規則に従わない休日を指定する方法があると確信しています...そのようなニュースは大歓迎です。

7
John Machin

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 
27
user2235214

Pythonでホリデーライブラリを使用します。

pipインストールの休日

アメリカの休日の場合:

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)

私のブログにリストされている国のリストが好きな国の休日を見つけることができます。 休日の私のブログ

Github Link of Holidays Python

11
shaurya uppal

日付を確認してください!=次のいずれか:

http://www.buyusa.gov/uk/en/us_bank_holidays.html

3
Tom R

私は最近、このような問題に実際に取り組んできました。静的な休日を生成するのはかなり簡単です(例:大晦日-12月31日(年を循環))。変動休日を生成するための明確に定義されたアルゴリズムがあります。基本的に、開始日(1900年1月1日など)があり、そこから作業します。私が実装することになったのは、n番目の月のアルゴリズムのn番目の週のn番目の日でした(例:MLK日= 1月の第3月曜日)。イースターのやり方は少し異なりますが、そのための明確に定義されたアルゴリズムがすでに存在します(1月を過ぎた後の聖金曜日は簡単です)。

あなたがチェックしたいと思うかもしれないこれに関するかなりまともな本がそこにあります: カレンダー計算

2
ast4