• HOME > 
  • PHP > 
  • PHPで曜日を取得する方法【初心者にもわかりやすく解説】

PHPで曜日を取得する方法【初心者にもわかりやすく解説】

投稿日:

このページにはGoogleアドセンス広告とアフィリエイト広告が含まれています。

カテゴリー記事のアイキャッチ画像
広告
広告

date関数を使って曜日を取得する方法

WEBサイトやWEBサービスを制作していると今日の曜日を表示させたり、曜日に応じた表示の切替を求められる状況があります。

このページでは、そのような場面でPHPを使って曜日を取得する方法について説明します。

曜日の取得は「date関数」で実現できます。

しかし、日本語の曜日を表示させるとなると少し工夫が必要になるので注意が必要です。

date関数のおさらい

まずはじめにPHPのdate関数がどのようなものかを簡単におさらいしておきましょう。

PHPはdate関数を用いることで現在の日時を取得することができるようになっています。

年であれば「Y」、月であれば「m」、日であれば「d」といったようにフォーマットを行うことで現在の年月日や時刻を取得できたり、特定の日時を取得することも可能です。

日時と連動させたシステムを構築するプログラミングには欠かすことのできない関数です。

PHP

<?php
    echo date('Y/m/d H:i:s');
?>

プレビュー

date関数
リンク先のサムネイル
PHPで日付を取得する方法

date関数は当日の日付を年月日で取得することが出来る関数です。date関数は「date('フォーマット形式')」という形で記述します。フォーマットには「Y/m/d」や「Y年m月d日」などがあります。...

date関数で曜日を取得するには?

date関数で取得できるのは年月日や時刻だけではありません。

「D」で英語表記の曜日、「w」で曜日番号が取得できる

フォーマットに「D」を使用すると「Sun、Mon...」のように英語表記の曜日を取得することができます。

PHP

<?php
    echo date('Y/m/d');
    echo '(' . date('D') . ')';
?>

プレビュー

曜日を表示

また、「w」を使用すると、日曜日を「0」番目として土曜日の「6」までの番号で取得することができます。

PHP

<?php
    echo date('Y/m/d');
    echo '(' . date('w') . ')';
?>

プレビュー

曜日を表示

日本語の曜日を表示するには?

さて肝心の日本語の曜日の表示ですが、残念ながらdate関数では英語表記の曜日しか取得できません。

しかし、こちら側で日本語表記を準備すれば曜日番号を利用して日本語で表示させる仕組みを作ることが可能です。

曜日を配列にする

日本語表記を準備するとはつまり、日~土までの各曜日の文字列を格納した配列を作るということです。

先程触れたdate関数のフォーマット「w」で今日の曜日番号を取得し、配列内のその番目の文字列を取り出せば日本語の曜日を表示することができます。

PHP

<?php
    $week = array("日","月","火","水","木","金","土");
    $today = $week[date("w")];
    echo "今日は" . $today . "曜日です。";
?>

プレビュー

曜日を表示

日曜を先頭にしておく

この時重要なのが日曜日を先頭にして順番に記述するということです。

dateで取得できる曜日番号は日曜から順に「0、1、2、3...」という形式になっているので、こちらと連動するように日曜から順に配列に収めておかなければ取り出す際にずれた曜日を取得してしまいます。

表記の仕方は自由

上記の例では「日、月、火...」という書き方をしていますが、「日曜日、月曜日、火曜日...」でも「SUNDAY、MONDAY、TUESDAY...」という書き方にしてもOKです。

曜日がずれている場合の対処方法

実際の曜日と異なる曜日が表示されたり日付や時間がずれている場合は、PHPのタイムゾーンが正しく設定されていない可能性があります。

サーバー側の設定ファイルである「php.ini」を開いてタイムゾーンを日本(Asia/Tokyo)に変更するか、プログラム内でdete_default_timezone_set("Asia/Tokyo")を使用してタイムゾーンの変更を行って下さい。

リンク先のサムネイル
PHPのタイムゾーンの設定方法【現在時刻がずれている時の対処法】

タイムゾーンとはその名のとおり、時間によって世界の地域を区分けしたものです。このタイムゾーンの設定によってWEBサイトは世界のどの地域の時刻を使用するかを決定しています。WEBサイトで日本の時刻を扱うためにはタイムゾーンを正しく設定しておく必要があり、反対に日本であっても他の地域のタイムゾーンを設定することも可能です...

曜日取得したい場面

実際には曜日を表示するだけではなく、曜日ごとにサイト上の表示を変化させたいというニーズがほとんどだと思います。

例えば「お店のサイトで曜日に応じて休業日や異なる営業時間を表示させたい」などです。

そのような場合は、上記の方法で取得した当日の曜日を利用して、曜日に応じて実行する処理を分岐させれば実現可能です。

ここでは、例で述べた「曜日に応じて休業日や異なる営業時間を表示させたい」という処理を作成してみます。

PHP

<?php
    $week = array("日","月","火","水","木","金","土");
    $today = $week[date("w")];
    echo date("Y年m月d日") . "(" . $today . ")";
    if($today == "土" || $today == "日"){
        echo esc_html("本日は休業日");
    }else{
        echo esc_html("本日は10:00-18:00まで営業中");
    }
?>

プレビュー

曜日に応じて休業日や異なる営業時間を表示 曜日に応じて休業日や異なる営業時間を表示

if文を用いてdate関数で取得した今日の曜日が「土」か「日」であれば「本日は休業日」を表示し、それ以外であれば「本日は10:00-18:00まで営業中」が表示されます。

まとめ

曜日を取得することができれば、曜日ごとに表示を変えるといったスケジュールと連動したシステムを持たせたサイトを作ることも可能です。訪問者がその日に求めている情報を正確に提供するためにもdate関数による曜日取得の方法を理解しておいてください。

広告
広告

関連する記事

サムネイル

PHPで配列内を検索してインデックス番号を取得する【arra……

2024年07月03日
array_searchは、配列内から特定の値を検索し、見つかった場合はその値のキー(インデックス番号)を返す関数です。該当する値が複数ある場合は、はじめに見つかったインデックス番号を返します。
サムネイル

PHPで配列内に値が存在するか判定する【in_array】

2024年07月02日
PHPのin_arrayは、配列内に特定の値が存在するかを判定して、結果をtrueかfalseで返してくれる関数です。第一引数に「調べたい値」、第二引数に「対象の配列」を指定して判定を行います。
サムネイル

PHPで配列から特定の値を持つキーを全て取得する【array……

2024年07月02日
HPのarray_keys関数は対象の配列からすべてのキー、もしくは特定の値を持つキーを取得して新しい配列として返してくれる関数です。基本的には引数に配列と検索する値をセットして使用します。
サムネイル

PHPで多次元配列の並び替え(ソート)を行う【array_m……

2024年06月13日
PHPで配列のソートを行う方法は他にもありますが、array_multisort関数を使えば、とても簡潔なコードで多次元配列を任意の条件・順序で並び替えを行うことができます。
サムネイル

PHPで配列の最小値や最大値を取得する【minとmax】

2024年06月13日
PHPのmin関数とmax関数はそれぞれ配列の最小値と最大値を取得できる関数です。引数に対象の配列を指定すると最小値や最大値を返します。
サムネイル

PHPで多次元配列から特定のカラムの値を取得する【array……

2024年05月29日
PHPのarray_columnは多次元配列の中から指定したカラムの値のみを抽出することができる関数です。抽出した値は新しい配列に格納されて返ってきます。
サムネイル

XAMPPでSSLを有効にする方法【httpsでアクセスでき……

2024年04月12日
最終更新日:2024年10月02日
XAMPPをSSL化してhttpsでアクセスできるようにするには、設定ファイルの変更と証明書の作成が必要です。