複数の国の祝日を一覧表示

2026年の祝日は米国が11日、英国が14日、日本が18日、ドイツが9日、インドネシアが17日で、5か国すべてに共通する日付は1月1日だけです。国コードを順に処理して国と年ごとに1回リクエストし、祝日の日付ごとに国をまとめてカレンダーを比較します。

APIで計算する

  1. キーを取得して環境変数を設定 新規登録で無料のキーを取得し、NARWHAL_API_KEYという環境変数に保存します。スクリプトはその変数を読み取り、キーをAuthorization: Bearer YOUR_KEYとして送信するため、Pythonを実行する環境で設定してください。
  2. 国と年を選択 GET /v1/calendars/holidays/{country}/{year}にはISO 3166 alpha-3国コードを使用し、この例では2026年のUSA、GBR、JPN、DEU、IDNをリクエストします。国と年の組み合わせごとに個別のリクエストが必要なので、この比較では5回リクエストします。比較する国の年は統一してください。
  3. 日付ごとに国をまとめる Pythonスクリプトを実行して各国の祝日を取得し、レスポンスの項目をdateでグループ化して、日付ごとに国コードの集合を作成します。スクリプトは日付を並べ替えて3か国以上に共通する日付を出力し、その後、共通の日付として出力されないものも含めたデータ全体から、各国の重複を除いた日付数を集計します。
    Python、5か国の祝日
    import os
    from collections import defaultdict
    import requests
    
    HEADERS = {"Authorization": f"Bearer {os.environ['NARWHAL_API_KEY']}"}
    COUNTRIES = ["USA", "GBR", "JPN", "DEU", "IDN"]
    
    by_date = defaultdict(set)
    for country in COUNTRIES:
        r = requests.get(f"https://api.narwhalapi.com/v1/calendars/holidays/{country}/2026",
                         params={"scope": "national_public"} if country == "IDN" else None,
                         headers=HEADERS, timeout=10)
        r.raise_for_status()
        for h in r.json()["holidays"]:
            by_date[h["date"]].add(country)
    
    for day in sorted(by_date):
        if len(by_date[day]) >= 3:
            print(day, sorted(by_date[day]))
    print({c: sum(1 for d in by_date.values() if c in d) for c in COUNTRIES})
  4. 共通の日付と国別の合計を確認 2026年の共通の日付の出力には1月1日、4月3日、5月25日、12月25日が含まれ、最後の行には各国の重複を除いた日付の合計が表示されます。この合計では、米国はfederal_government、英国はbank、日本とドイツはnational_publicのスコープを使用し、インドネシアのリクエストではnational_publicを明示的に選択しています。

共通の日付に対応する国の一覧は、祝日の名前とは分けて確認してください。2026年5月25日はドイツ、英国、米国に共通する祝日の日付で、米国では戦没将兵追悼記念日です。スクリプトは日付でグループ化するため、一致する国の祝日名が同じである必要はありません。2026年4月3日はドイツ、英国、インドネシアで聖金曜日となり、この日付も共通の日付として出力する条件を満たします。国の一覧にはDEU、GBR、IDNが含まれます。

スプレッドシートまたはコードを使わずに計算する

スクリプトを使わずに日付を比較するには、各国の祝日カレンダーページ (英語)を開きます。スプレッドシートで比較する場合は、各国の日付を別々の列に貼り付け、同じ国内の各日付は重複を除いて1件だけ残します。比較する日付をA2に、他の国の日付一覧をB:E列に入力します。

他の列で一致する日付を数える
=COUNTIF(B:E, A2)

数式は他の国の列で一致するセルを数えます。A列に一覧を置いた国はA2の日付ですでに数えているため、数式の結果はシート内の他の列での一致数として読み取ります。一致した日付がどのカレンダーのものか確認できるよう、貼り付ける際は国ごとに日付をまとめてください。A列の比較する日付の隣に数式をコピーします。各結果は同じ行の日付と対応させて確認します。数式は他の列から同じ日付を検索するため、一覧の行位置を揃える必要はありません。

状況に応じた方法の選び方

状況適した方法理由
2か国または3か国を一度だけ比較カレンダーページ各国の祝日の日付を直接確認
チームのカレンダー作成や複数拠点の給与計算国ごとに年1回実行するスクリプト日付ごとに国をまとめ、重複を除いた日付を集計
一部の地域だけを含めるレスポンスのsubdivision_codesで絞り込み比較対象の行政区分を選択

英国の行数が2倍になるのはなぜですか?

銀行休業日は英国の構成国によって異なるため、各日付が行政区分のグループごとに1回ずつ表示されます。2026年の英国のレスポンスには、イングランドとウェールズ、北アイルランド、スコットランドの行が別々に含まれるため、元の行数は28行ですが、カレンダー全体の重複を除いた日付数は14日です。国全体の重複を除いた日付の合計が必要な場合は、日付を集合にまとめてください。

地域のカレンダーを作成する場合は、日付をまとめる前に、レスポンスのsubdivision_codesで該当する項目を選択します。これにより、地域の選択と重複を除いた日付の集計を分けて行えます。

一斉休暇を除外するにはどうすればよいですか?

インドネシアでは、cuti bersamaと呼ばれる一斉休暇を除外するためにscope=national_publicを指定します。2026年は、この指定で重複を除いた祝日の日付が17日になりますが、フィルターなしのレスポンスにはcollective_leaveの項目も含まれるため25行になります。この比較では、インドネシアのリクエストにスコープのパラメーターを指定します。

日付を全体のデータに追加する前に、スコープを適用してください。適用しない場合、共通の日付の比較や国の祝日の集計に、インドネシアの一斉休暇も含まれます。

週末の祝日の数え方は各国で同じですか?

いいえ、各国の一覧では、その国が定めた日付を使用します。祝日を平日に振り替え、observedを付ける国もあります。比較には振替日も含めてレスポンスの日付を使用し、すべての国の週末の祝日を単一の規則で移動させないでください。

実例:2026年12月25日

2026年12月25日を対象に、各国で選択した祝日一覧からその日付を検索します。ドイツ、英国、インドネシア、米国の国コードがそれぞれ1つずつ加わり、日本にはその日付の祝日はありません。同じ日付の地域別の行がレスポンスに複数含まれる場合も、一致した国は1か国として数えます。

国コード2026年12月25日は祝日か
ドイツDEUはい
英国GBRはい
インドネシアIDNはい
米国USAはい
日本JPNいいえ
合計DEU, GBR, IDN, USA5か国中4か国

2026年12月25日の国コードを重複を除いて数えると、5か国中4か国になります。3か国以上に共通するため、この日付はスクリプトの出力条件を満たします。比較すると、2026年1月1日には5か国すべての国コードがあり、2026年で5か国すべてに共通する唯一の日付です。

公開。