PHPのdateを理解しよう!PHPで曜日を簡単に取得する方法をご紹介
PHPによるWEB開発では、日付や曜日の基本的かつ重要なスキルです。
特に曜日の取得と表示は、多くのアプリケーションで必要とされる機能です。
本記事では、PHPのdate関数を中心に、効率的な曜日取得の方法と応用テクニックを解説します。’w’パラメータの使い方、日本語・英語での曜日表示方法、strtotimeとの連携など、実践的な例を交えながら紹介します。
ステップバイステップで説明しますので、ぜひ最後までお付き合いください。
Contents
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関数を組み合わせることで、さまざまな日付操作が可能になります。曜日の取得も数値、日本語、英語など用途に応じて柔軟に対応できます。
本記事で紹介したコードをコピー&ペーストして、実際に動作を確認してみましょう。