カテゴリ: PHP 更新日: 2026/09/27

PHPで曜日や祝日を判定する方法!初心者でもわかる日付処理の基本ガイド

PHP の曜日や祝日を判定する方法
PHP の曜日や祝日を判定する方法

先生と生徒の会話形式で理解しよう

生徒

「先生、PHPで『この日付は何曜日か』とか『祝日かどうか』って調べることはできますか?」

先生

「はい、できますよ。PHPには日付を扱う機能がしっかり用意されているので、曜日も祝日もチェックできます。」

生徒

「プログラミング初心者でもできますか?複雑そうに感じます……」

先生

「大丈夫です!今回は超初心者の方でもわかるように、曜日と祝日の判定方法をやさしく丁寧に説明しますね。」

1. PHPで日付を扱うってどういうこと?

1. PHPで日付を扱うってどういうこと?
1. PHPで日付を扱うってどういうこと?

PHP(ピー・エイチ・ピー)は、Webサイトで動的な表示を作るのが得意なプログラミング言語です。その中でも「日付や時間の操作」は非常によく使われる機能で、システム開発には欠かせません。

例えば、「今日の日付を表示する」「投稿してから何分経過したか計算する」「期間限定のキャンペーン終了までカウントダウンする」といったことが、PHPを使えば数行のコードで実現できます。

PHPで日付を扱う代表的な方法には、date()関数やDateTimeクラスがあります。「クラス」と聞くと難しく感じるかもしれませんが、「便利な道具がたくさん詰まった専用のツールボックス」だとイメージしてみてください。DateTimeクラスというツールボックスを取り出せば、初心者でも複雑な計算なしに日付を自由自在に操れるようになります。

まずは、今の「西暦・月・日・時間」を表示させる一番シンプルな書き方を見てみましょう。


<?php
// 現在の日時を保持する「DateTime」というツールボックスを用意します
$now = new DateTime();

// formatを使って、好きな形(年-月-日 時:分:秒)で表示します
echo $now->format("Y-m-d H:i:s");
?>

このコードだけで、サーバーが持っている正確な現在時刻を取得して画面に出すことができます。このように、PHPには日付を扱うための「共通のルール」が備わっているため、一度基本を覚えれば、曜日判定や祝日の計算といった応用もスムーズに理解できるようになります。

2. PHPで曜日を判定する基本の書き方:DateTimeクラスの使い方

2. PHPで曜日を判定する基本の書き方:DateTimeクラスの使い方
2. PHPで曜日を判定する基本の書き方:DateTimeクラスの使い方

プログラミングで日付を扱う際、もっとも便利で「標準的」な方法がDateTimeクラスを使う方法です。初心者の方でも、以下の手順通りに書けば、驚くほど簡単に特定の日付の曜日を導き出すことができます。

たとえば、2025年9月3日が何曜日なのかを判定するシンプルなサンプルコードを見てみましょう。コピー&ペーストして実際に動かしてみてください。


<?php
// 1. 調べたい日付を指定して「日付の塊(オブジェクト)」を作る
$date = new DateTime("2025-09-03");

// 2. formatメソッドを使って、曜日を英語のフルネーム(l:エル)で取得する
$weekday = $date->format("l");

// 3. 結果を画面に表示する
echo "2025年9月3日は " . $weekday . " です。";
?>

このコードのポイントは、format("l")(小文字のエル)という指定です。これはPHPに対して「曜日を英語のフルネームで出力してね」と命令する特別な記号です。実行すると、画面には"Wednesday"と表示されます。

「英語だと分かりにくいな…」と感じるかもしれませんが、まずはこの基本の形を覚えましょう。この英語の結果を元にして、後から「月・火・水…」といった日本語に変換する処理を加えていくのが、プログラミングの一般的な流れになります。

3. PHPで日付を日本語の曜日(月・火・水...)で表示する方法

3. PHPで日付を日本語の曜日(月・火・水...)で表示する方法
3. PHPで日付を日本語の曜日(月・火・水...)で表示する方法

PHPの標準機能では、曜日を取得すると「Monday」や「Mon」といった英語表記になってしまいます。Webサイトを日本語で作成している場合、「月曜日」や「(水)」のように表示したい場面が多いですよね。

プログラミング未経験の方でも一番分かりやすい方法は、「曜日の名前を書いたリスト(配列)」を自分で用意して、数字と紐付ける方法です。


<?php
// 1. 日本語の曜日のリスト(配列)を作る
$week_names = ["日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"];

// 2. 指定した日付のインスタンスを作る
$date = new DateTime("2025-09-03");

// 3. format("w")を使って、曜日を「0〜6の数字」で取得する
$index = (int)$date->format("w");

// 4. 配列から対応する曜日の文字を取り出して表示
echo "この日は " . $week_names[$index] . " です。";
?>

【ここがポイント!】

format("w") という命令を使うと、コンピュータは曜日を以下のルールで数字として返してくれます。

  • 0:日曜日
  • 1:月曜日
  • (中略)
  • 6:土曜日

この「0〜6」という数字は、配列の順番(インデックス)と完全に一致します。そのため、$week_names[$index] と書くだけで、複雑な条件分岐を使わなくてもスマートに日本語へ変換できるのです。シンプルですが、実務でも非常によく使われるテクニックです。

4. PHPで祝日を判定する方法は?初心者向けの簡単な手順

4. PHPで祝日を判定する方法は?初心者向けの簡単な手順
4. PHPで祝日を判定する方法は?初心者向けの簡単な手順

PHPを学習し始めると「カレンダー機能を作ってみたい」と思う方も多いでしょう。しかし、実はPHPの標準機能には「今日が祝日かどうか」を直接判定する関数は用意されていません。

日本の祝日は「国民の祝日に関する法律」によって決まりますが、振替休日やハッピーマンデー制度などで毎年日付が変動するため、プログラムで判定するには少し工夫が必要です。

プログラミング未経験の方でも取り組みやすい、代表的な2つの判定方法をご紹介します。

① 自分で祝日リストを作る方法

「1月1日は元日」のように、配列(データのリスト)に祝日を登録して、それと照らし合わせる最もシンプルな方法です。仕組みが理解しやすく、外部との通信も不要なため動作が高速です。

② 祝日判定APIを利用する方法

Googleカレンダーなどが提供している「祝日データ」をインターネット越しに取得する方法です。自分でリストを更新する手間が省けるため、実務ではこちらがよく使われます。

初心者向け:配列を使った自作判定サンプル

まずはイメージを掴むために、特定の特定の日が「元日」かどうかを判定する超シンプルなコードを見てみましょう。


// 判定したい日付(2026年1月1日)
$targetDate = "2026-01-01";

// 祝日リスト(配列)を作成
$holidays = [
    "2026-01-01" => "元日",
    "2026-01-12" => "成人の日",
    "2026-02-11" => "建国記念の日"
];

// 指定した日付がリストにあるかチェック
if (isset($holidays[$targetDate])) {
    echo $targetDate . "は「" . $holidays[$targetDate] . "」です!";
} else {
    echo $targetDate . "は平日(または土日)です。";
}

このように、「日付」と「祝日名」をセットにして準備しておくのが基本の考え方です。これなら、複雑な計算式を使わなくても直感的に「どのコードが何をしているか」が分かりますよね。まずはこの基礎を押さえておきましょう。

5. 自作の祝日リストでチェックする方法

5. 自作の祝日リストでチェックする方法
5. 自作の祝日リストでチェックする方法

プログラミングを始めたばかりの方にとって、最も直感的で分かりやすいのが「自分で祝日の日付リストを作ってしまう」方法です。これは、特定の「日付」と「祝日名」をペアにしてプログラムに覚えさせておくやり方です。

例えば、PHPを使って「今日が祝日かどうか」を判定するシンプルなコードは以下のようになります。専門用語で「連想配列」と呼ばれる仕組みを使いますが、初心者の方でも「名簿」を作るような感覚で理解できるはずです。


<?php
// 1. 祝日のリスト(名簿)を作成する
$holidays = [
    "2025-01-01" => "元日",
    "2025-01-13" => "成人の日",
    "2025-02-11" => "建国記念の日",
    "2025-02-23" => "天皇誕生日",
];

// 2. 判定したい日付を設定(ここでは2025年1月1日をセット)
$today = "2025-01-01";

// 3. リストの中にその日付があるかチェック
if (array_key_exists($today, $holidays)) {
    // リストにあった場合の処理
    echo "今日は祝日(" . $holidays[$today] . ")なので、お休みです!";
} else {
    // リストになかった場合の処理
    echo "今日は祝日ではありません。通常の営業日です。";
}
?>

この方法の最大のメリットは、「どのコードが何をしているか」がひと目で分かる点です。外部の複雑なシステムと連携する必要がないため、数日分だけの判定であればこれで十分機能します。

ただし、注意点もあります。日本の祝日には「成人の日」のように毎年日付が変わる移動祝日(ハッピーマンデー)や、法律改正で新設される休日があるため、毎年手動でリストを書き換える手間が発生します。数が増えると管理が大変になるため、まずは小規模なプログラムから試してみるのがおすすめです。

6. 祝日APIを使えば自動で判定可能!メンテナンス不要の仕組み

6. 祝日APIを使えば自動で判定可能!メンテナンス不要の仕組み
6. 祝日APIを使えば自動で判定可能!メンテナンス不要の仕組み

「毎年、手動で祝日データを更新するのは面倒……」と感じるなら、インターネット上で公開されている「祝日API(エーピーアイ)」を活用するのが賢い方法です。APIとは、外部のサーバーから必要なデータ(この場合は祝日の日付や名前)をリアルタイムで受け取る仕組みのことです。

例えば、無料で公開されている「日本の祝日API」などを利用すれば、プログラムが自動で最新の祝日情報を取得してくれます。これにより、振替休日やハッピーマンデー、数年おきに変わる祝日にも自動で対応できるため、一度設定してしまえばコードを書き換える手間が一切なくなります。

初心者向けポイント: APIは「最新の祝日カレンダーを貸し出してくれる窓口」のようなものです。自分のプログラムからその窓口に「今年の祝日を教えて!」と聞きに行くだけで、正確な判定ができるようになります。

Pythonでの簡単な実装例

プログラミング未経験の方でも分かりやすいように、Pythonを使ってAPIから祝日データを取得し、今日が祝日かどうかを判定するシンプルなサンプルコードを紹介します。


import requests
from datetime import date

# 1. 祝日APIからデータを取得する(JSON形式)
url = "https://holidays-jp.github.io/api/v1/date.json"
response = requests.get(url)
holidays = response.json()

# 2. 今日の日付を取得(例: 2026-02-11)
today = str(date.today())

# 3. 今日が祝日リストに含まれているか判定
if today in holidays:
    print(f"今日は祝日({holidays[today]})です。お休みですね!")
else:
    print("今日は平日です。お仕事や学校を頑張りましょう。")

このコードでは、まずAPIのURLにアクセスして最新の祝日リストをダウンロードしています。そのリストの中に「今日の日付」が含まれているかを確認するだけで、複雑な計算をすることなく祝日判定が完了します。Webアプリや業務効率化ツールを作る際には、非常に強力な味方になるはずです。

7. 祝日APIをPHPでプログラムに組み込む方法(初心者向けサンプル)

7. 祝日APIをPHPでプログラムに組み込む方法(初心者向けサンプル)
7. 祝日APIをPHPでプログラムに組み込む方法(初心者向けサンプル)

Webサイトや予約システムを運用していると、「今日が祝日かどうか」を自動で判定したい場面が多くあります。PHPを使えば、公開されている無料の「祝日API」からデータを取得し、初心者の方でも数行のコードで自動判定機能を実装できます。

ここでは、最もシンプルで汎用性が高いfile_get_contents()関数を使った実装例をご紹介します。プログラミングが初めての方でも、以下のコードをコピー&ペーストするだけで動作を確認することが可能です。


<?php
// 1. 今日の日付を取得(例:2026-02-11)
$today = date("Y-m-d");

// 2. 祝日API(JSON形式)からデータを読み込む
// 日本の祝日を網羅した信頼性の高い外部データを利用します
$url = "https://holidays-jp.github.io/api/v1/date.json";
$json = file_get_contents($url);

// 3. 取得したJSONデータをPHPで扱える「配列」に変換
$holidays = json_decode($json, true);

// 4. 今日の日付が祝日リストに含まれているか判定
if (isset($holidays[$today])) {
    // 祝日の場合の処理
    echo "今日は「" . $holidays[$today] . "」で祝日です。サイトを休日表示に切り替えます。";
} else {
    // 平日の場合の処理
    echo "今日は祝日ではありません。通常営業日です。";
}
?>

コードの解説とポイント

このプログラムの大きなメリットは、「メンテナンスフリー」である点です。内閣府の発表に合わせて更新されるAPIデータを直接参照するため、ハッピーマンデーや振替休日が変わるたびに自分でプログラムを書き換える必要がありません。

  • date("Y-m-d"):サーバーの現在時刻を取得します。
  • json_decode:インターネット上のデータ形式(JSON)を、PHPが理解できる形式に翻訳する重要なステップです。
  • isset():指定した日付がデータの中に存在するかどうかを瞬時にチェックします。

このようにAPIを活用することで、カレンダー管理の手間を大幅に削減し、ユーザーにとって利便性の高いWebサービスを提供できるようになります。

8. 曜日と祝日の組み合わせを活用しよう

8. 曜日と祝日の組み合わせを活用しよう
8. 曜日と祝日の組み合わせを活用しよう

曜日と祝日がわかると、たとえば「平日のみ予約を受け付ける」「土日祝はメッセージを変える」など、現実の業務にも応用できます。

例えば飲食店の定休日設定や、学校の出欠管理などにも活かせます。

まとめ

まとめ
まとめ

PHPで曜日や祝日を判定する方法について学ぶことで、日付処理の基本的な考え方と応用の可能性を広く理解することができました。

まず、PHPではDateTimeクラスを使うことで、日付や時間の情報を取得・操作できます。曜日を調べるには、format("l")やformat("w")を使って、英語または数字で曜日を取得し、それを人間が読める形に変換して表示するという流れがありました。

日本語で曜日を出したいときは、配列を使って曜日を対応させるという方法を取りました。これにより、直感的で見やすい出力が可能になります。たとえば、「2025年9月3日は水曜日です」と日本語で表示させることができ、ユーザーにとっても親しみやすい内容になります。

祝日判定に関しては、PHPに標準で備わっている機能では対応できないため、自作の祝日リストを配列で用意して照合する方法と、外部APIを活用する方法の2つが紹介されました。

自作の祝日リストは手軽に実装できますが、「ハッピーマンデー」や毎年変わる祝日に対応するには限界があります。一方、祝日APIを活用すれば、最新の祝日データをインターネットから自動取得できるため、メンテナンスの手間が大きく軽減されます。

実際のコード例では、file_get_contents()でAPIのJSONデータを取得し、json_decode()で配列に変換、array_key_exists()で祝日かどうかを判定するという流れでした。これらの知識を使えば、日付によってWebサイトやアプリの表示を切り替えることが可能になります。

たとえば、平日のみ受付する予約システムや、土日祝に定型メッセージを表示するカレンダーアプリ、または営業日ベースで通知を送信する業務システムなどにも活用できます。

最後に、日付処理を行う際には、タイムゾーンの考慮も重要です。東京と他の地域では時差がありますので、正確な時刻表示が求められるサービスでは、setTimezone()を使って地域に応じた時刻表示を行いましょう。

曜日と祝日の判定というテーマを通じて、PHPの基本的な日付操作から実践的なAPI連携までを学ぶことができました。こうした技術を丁寧に習得していくことで、実用性の高いWebサービスの構築に大きく近づきます。

祝日APIを使った実用例(復習)


<?php
$today = date("Y-m-d");
$json = file_get_contents("https://holidays-jp.github.io/api/v1/date.json");
$holidays = json_decode($json, true);

if (array_key_exists($today, $holidays)) {
    echo $today . " は祝日(" . $holidays[$today] . ")です。";
} else {
    echo $today . " は平日です。";
}
?>

このように、APIを活用すれば祝日の自動判定も簡単に実現できます。

先生と生徒の振り返り会話

生徒

「PHPで曜日を調べたり、祝日かどうかを判定できるって、すごく便利ですね!実務にも活かせそうです。」

先生

「そうですね。PHPのDateTimeクラスを使えば、日付処理はとても簡単にできます。しかもAPIと組み合わせると、祝日の管理も自動化できるんです。」

生徒

「曜日の配列とか、自作の祝日リストも試してみました。将来的にはAPIも使ってみたいと思いました!」

先生

「祝日APIは毎年の変更にも対応してくれるので、更新の手間も省けてとても便利です。ビジネス向けの機能にも役立ちますよ。」

生徒

「飲食店の予約サイトや勤怠管理システムとか、曜日と祝日を組み合わせた機能がいろいろ作れそうです!」

先生

「その通りです。基礎がしっかりしていれば、アイデア次第で実用的なアプリが作れます。これからも日付処理を活かしていきましょう!」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

PHPで日付が何曜日かを調べるにはどの関数を使えばいいですか?

PHPではDateTimeクラスを使って日付を扱い、formatメソッドで曜日を取得することができます。たとえばformat("l")で英語の曜日、format("w")で数字の曜日を取得できます。

PHPで日本語の曜日を表示するにはどうしたらいいですか?

日本語の曜日を表示するには、配列を使って曜日の日本語表現を用意し、format("w")で取得した数値と対応させるのが一般的です。

PHPで祝日を判定する方法にはどんな種類がありますか?

PHPで祝日を判定するには、自作の祝日リストを使う方法と、外部の祝日APIを使う方法の2種類があります。
コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

PHP の日時操作の記事一覧へ
新着記事
New1
Gemini
GeminiでPHPコードを学ぶ方法!初心者向けに始め方と学習手順を解説
New2
PHP
PHP のセッション変数を保存・取得・削除する方法
New3
PHP
PHP のコンストラクタ(__construct)とは?使い方を解説
New4
Claude
ClaudeでPythonデバッグを解決する方法!Pythonデバッグのエラーメッセージを長いログから読み解く方法
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonでディレクトリを作成・削除・一覧表示する方法!初心者向けにosとpathlibを使った使い方を解説
No.2
Java&Spring記事人気No2
Gemini
GeminiでPython自動化を始める時の質問文!目的と前提を伝えるコツ
No.3
Java&Spring記事人気No3
Claude
ClaudeにPHPコードをレビューしてもらう方法!安全性と保守性を同時に確認するチェックリスト
No.4
Java&Spring記事人気No4
PHP
PHP のフォームデータの受け取り($_POST, $_GET)を完全解説!初心者向けガイド
No.5
Java&Spring記事人気No5
Python
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.6
Java&Spring記事人気No6
Claude
Claudeを使ったPythonコードレビューの進め方!設計意図と処理の流れを表で確認する質問例
No.7
Java&Spring記事人気No7
Gemini
GeminiにPHPエラーを相談する時のコードの貼り方!原因特定を早めるコツ
No.8
Java&Spring記事人気No8
PHP
PHP のインストール方法(Windows・Mac・Linux)と開発環境