IT・WEB・ゲーム業界の転職に強いR-Stone

転職コラム

PHPのdateを理解しよう!PHPで曜日を簡単に取得する方法をご紹介

PHPによるWEB開発では、日付や曜日の基本的かつ重要なスキルです。

特に曜日の取得と表示は、多くのアプリケーションで必要とされる機能です。

本記事では、PHPのdate関数を中心に、効率的な曜日取得の方法と応用テクニックを解説します。’w’パラメータの使い方、日本語・英語での曜日表示方法、strtotimeとの連携など、実践的な例を交えながら紹介します。

ステップバイステップで説明しますので、ぜひ最後までお付き合いください。

PHPのdate wとは?

date関数は、指定された日時を任意の形式で表示できる便利な関数です。書式文字’w’を使うと、特定の日付の曜日を簡単に取得できます。

例えば、以下のようなコードで現在の曜日を数値で取得できます。

$weekday = date(‘w’);

echo $weekday;  // 0から6のいずれかの数字を表示します。

’w’では、現在の曜日に応じて0から6の数値が出力されます。

数値

曜日

0

日曜日

1

月曜日

2

火曜日

3

水曜日

4

木曜日

5

金曜日

6

土曜日

そもそもPHPのdateとは?

PHPのdate関数は、日付や時刻を扱うための基本的な関数です。date関数を使うと、指定した書式にしたがって日時を文字列として取得できます。

date関数の基本的な使い方は以下のとおりです。

date(書式指定文字列, UNIXタイムスタンプ(省略可));

  • ・UNIXタイムスタンプを省略すると現在日時を対象とします。
  • ・date()関数は結果を文字列で返します。

使用例: 現在の日時を「年-月-日 分:秒」の形式で出力します。

echo date(‘Y-m-d H:i:s’);

// 出力例 2024-05-21 19:24:15

date関数は柔軟で、書式文字を組み合わせ、さまざまな形式の日時表現を簡単に作成できます。

strtotimeとの違い

strtotimeは、人間が読める形式の日付文字列をUNIXタイムスタンプに変換します。

例えば、以下のようにstrtotimeとdate関数を組み合わせて使用できます。

$timestamp = strtotime(‘next Monday’);

echo date(‘Y-m-d’, $timestamp);

// 出力例 2024-05-27

上記の例では、「次の月曜日」の日付を「年-月-日」形式で出力します。

【言葉別】曜日を取得する方法

PHPでは、dateやstrtotimeなどの関数を使って曜日を取得できます。

本項では、日本語と英語で曜日を取得する方法をご紹介します。

日本語で取得する場合

日本語で曜日を取得するには、配列を使用する方法が一般的です。まず、日本語の曜日名を配列で定義し、date関数で取得した数値をインデックスとして使用します。

$weekday = [‘日’, ‘月’, ‘火’, ‘水’, ‘木’, ‘金’, ‘土’];

$today = date(‘w’); // 0(日曜)から6(土曜)の数値を取得

echo $weekday[$today] . ‘曜日’;

上記の方法を使えば、簡単に日本語の曜日を表示できます。

英語で取得する場合

英語で曜日を取得する場合、date関数の書式文字列を変更するだけで簡単に実現できます。

完全な曜日名を取得するにはdate(‘l’)を、省略形の曜日名を取得するにはdate(‘D’)を使用します。

echo date(‘l’); // 完全な曜日名(出力例:Monday)

echo date(‘D’); // 省略形の曜日名(出力例:Mon)

書式文字’l’や’D’をdate関数で使えば、英語の曜日を簡単に取得できます。

PHPのdate wの使い方例

PHPのdate関数を使って曜日を取得する方法をご紹介します。

現在の曜日を取得するには、以下のようなコードを使います。

$weekday = date(‘w’);

echo $weekday; // 0(日曜日)から6(土曜日)のいずれかの数字が出力されます。

特定の日付の曜日を知りたい場合は、date関数の第2引数に日時をタイムスタンプで指定します。strtotimeを組み合わせるのが便利です。

$date = ‘2024-05-15’;

$weekday = date(‘w’, strtotime($date));

echo $weekday; // 3が出力され、水曜日と分かります。

例えば、2020年から2030年までの元旦の曜日を出力するには、以下のコードを書きます。

$weekdays = [‘日曜日’, ‘月曜日’, ‘火曜日’, ‘水曜日’, ‘木曜日’, ‘金曜日’, ‘土曜日’];

 

// 2020年から2030年までの元旦の曜日を出力

for ($year = 2020; $year <= 2030; $year++) {

    $date = $year . “-01-01”;

    $weekday = date(‘w’, strtotime($date));

    echo $weekdays[$weekday] . \t . $date . \n;

}

上記の出力は以下のようになります。

水曜日  2020-01-01

金曜日  2021-01-01

土曜日  2022-01-01

日曜日  2023-01-01

月曜日  2024-01-01

水曜日  2025-01-01

木曜日  2026-01-01

金曜日  2027-01-01

土曜日  2028-01-01

月曜日  2029-01-01

火曜日  2030-01-01

また、曜日に基づいてアプリケーションの処理を分岐させたい場合は、switch文やif文を使うと便利です。

$weekday = date(‘w’);

switch ($weekday) {

    case 0:

        echo ‘日曜日です’;

        break;

    case 6:

        echo ‘土曜日です’;

        break;

    default:

        echo ‘平日です’;

        break;

}

まとめ

書式文字’w’をdate関数で使うと、曜日を数値で取得できます。

date関数とstrtotime関数を組み合わせることで、さまざまな日付操作が可能になります。曜日の取得も数値、日本語、英語など用途に応じて柔軟に対応できます。

本記事で紹介したコードをコピー&ペーストして、実際に動作を確認してみましょう。