カテゴリ: PHP 更新日: 2026/03/07

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で曜日を判定する基本の書き方

2. PHPで曜日を判定する基本の書き方
2. PHPで曜日を判定する基本の書き方

まずは特定の日付が「何曜日か」を調べてみましょう。たとえば2025年9月3日が何曜日かを調べたいときのサンプルコードは以下のようになります。


<?php
$date = new DateTime("2025-09-03");
$weekday = $date->format("l");
echo "この日は " . $weekday . " です。";
?>

format("l")という部分は、「曜日を英語で出力してね」という意味です。たとえば"Wednesday"(水曜日)などが表示されます。

3. 日本語で曜日を表示する方法

3. 日本語で曜日を表示する方法
3. 日本語で曜日を表示する方法

英語ではなく「月曜日」「火曜日」など日本語で表示したい場合は、自分で配列(あらかじめデータを並べた表)を用意します。


<?php
$youbi = ["日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"];
$date = new DateTime("2025-09-03");
$index = $date->format("w");
echo "この日は " . $youbi[$index] . " です。";
?>

format("w")は、0〜6の数字で曜日を返します。0が日曜日、1が月曜日……6が土曜日というルールです。

4. PHPで祝日を判定するにはどうすればいい?

4. PHPで祝日を判定するにはどうすればいい?
4. PHPで祝日を判定するにはどうすればいい?

実はPHPには、最初から「この日が祝日かどうか」を判断する機能はありません。でも安心してください。

方法は2つあります:

  • 自分で祝日リストを用意して判定する
  • 祝日APIを使って判定する

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

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

一番かんたんな方法は、自分で祝日を配列でまとめて、それと照らし合わせる方法です。


<?php
$holidays = [
    "2025-01-01" => "元日",
    "2025-01-13" => "成人の日",
    "2025-02-11" => "建国記念の日",
    // 必要に応じて追加
];

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

この方法は手軽ですが、毎年祝日が変わる「ハッピーマンデー」などには対応しづらいというデメリットがあります。

6. 祝日APIを使えば自動で判定可能!

6. 祝日APIを使えば自動で判定可能!
6. 祝日APIを使えば自動で判定可能!

もっと便利にしたいなら、インターネット上の「祝日API(エーピーアイ)」を使う方法があります。これは、データを外部のサービスから取得する仕組みです。

たとえば「日本の祝日API」という無料で使えるサービスがあります。

これを使えば、自動的に祝日を取得できるので、毎年更新する必要がありません。

7. 祝日APIをPHPで使うサンプル

7. 祝日APIをPHPで使うサンプル
7. 祝日APIをPHPで使うサンプル

PHPのfile_get_contents()関数で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 . " は平日です。";
}
?>

このコードなら、最新の祝日を自動的に取得してくれるので便利です。

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")で取得した数値と対応させるのが一般的です。
コメント
コメント投稿は、ログインしてください

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

カテゴリの一覧へ
新着記事
New1
Python
Pythonのカスタム例外を作成する方法を完全解説!初心者でもわかる独自のExceptionクラス入門
New2
PHP
PHP の型変換を完全ガイド!初心者でもわかる明示的変換・自動変換
New3
PHP
PHPの真偽値と条件判定をやさしく解説!初心者でもわかるempty・isset・is_nullの使い方
New4
PHP
PHP の file_get_contents() を使ってファイルを読み込む方法!初心者でもできる簡単なファイル操作
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonのfinally文を徹底解説!例外発生時でも実行される処理の書き方と使い方
No.2
Java&Spring記事人気No2
Python
Pythonで辞書のネスト構造(入れ子辞書)を扱う方法 初心者向け完全ガイド
No.3
Java&Spring記事人気No3
Python
Pythonのクラスメソッドと静的メソッドの違いとは?初心者でも迷わない使い分けガイド
No.4
Java&Spring記事人気No4
Python
Pythonの書き方を基本から解説!はじめてのPythonプログラム
No.5
Java&Spring記事人気No5
Python
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.6
Java&Spring記事人気No6
PHP
PHPの可変長引数(...$args)の使い方を完全ガイド!初心者でもわかる基本と活用方法
No.7
Java&Spring記事人気No7
PHP
初心者向けPHP の MySQL のデータを更新する方法(UPDATE 文)完全ガイド
No.8
Java&Spring記事人気No8
Python
Pythonのコンストラクタ(__init__)の使い方!初心者でもわかるオブジェクトの初期化