- 公開日: 2017年08月23日
phpの日本語での曜日の取得の仕方
phpで日本語で曜日を取得するするには一工夫が必要です。また、その方法はいくつかあり、今回はその方法をサンプルソースを交え、わかりやすく解説していきます。
phpで日付に対する処理を行うには、date()関数をまずは知らなければなりません。 date()関数に関してはphpで現在日時を取得する方法!を御覧ください。
phpでの曜日の取得の方法
phpではdate()関数やDateTimeクラスを利用することで、英語表記での曜日を取得することができます。ただし、日本語を取得するような関数は用意されていません。今回は、date()関数の使用方法を応用し、日本語の曜日を取得する方法をご紹介します。
date()関数を使用した例
date()関数の基本的な使用方法は下記になります。
date(フォーマット)
echo date("Y/m/d H:i:s");
"2017/08/22 12:47:32"
date()関数の引数であるフォーマットに「l」もしくは「D」を使用することで、曜日の英語表記を取得することができます。また、「w」を使用することで曜日番号を取得することができます。(日曜: 0 → 土: 6)
フォーマットの記号についてはこちらで詳しく解説しています。
上記を利用し、下記のように曜日を日本語で取得することが可能です。
$week = array( "日", "月", "火", "水", "木", "金", "土" );
echo $week[date("w")];
"火"
日本語の曜日の配列を事前に用意し、date()関数のフォーマットに「w」を指定すると、戻り値が曜日番号で返ってくることを利用しています。
DateTimeクラスを利用した例
DateTimeクラスを利用する際も、date()関数と同様の方法で日本語の曜日を取得することができ、その方法は下記のようになります。
$week = array( "日", "月", "火", "水", "木", "金", "土" );
$datetime = new DateTime("now");
echo $week[$datetime->format("w")];
"火"
phpでの指定日時の曜日の取得方法
date()関数やDateTimeクラスは、日時を指定することが可能です。その機能を利用し、指定した日付の日本語の曜日を取得することが可能です。
date()関数を使用した例
date()関数は、第二引数に日時を指定することが可能です。
基本的な書式
date(フォーマット, 指定した日付のタイムスタンプ);
タイムスタンプを取得するには、strtotime()関数を利用します。strtotime()関数で使用できる文字列の代表的なものをご紹介します。
echo date("Y年m月d日 H時i分s秒", strtotime("2017-08-22 14:14:20"));
"2017年08月22日 14時14分20秒"
上記のように、指定した日付で指定したフォーマットに変換することが可能です。その機能を利用し、日本語で曜日を取得する際は、下記のようにします。
$week = array( "日", "月", "火", "水", "木", "金", "土" );
echo $week[date("w", strtotime("2017-08-22"))];
"火"
DateTimeクラスを利用した例
DateTimeクラスはコンストラクタ引数に日時を指定することが可能です。
$datetime = new DateTime("2017-08-22 14:14:20");
echo $datetime->format("Y年m月d日 H時i分s秒");
"2017年08月22日 14時14分20秒"
上記のように、指定した日付で指定したフォーマットに変換することが可能です。その機能を利用し、日本語で曜日を取得する際は、下記のようにします。
$week = array( "日", "月", "火", "水", "木", "金", "土" );
$datetime = new DateTime("2017-08-22 14:14:20");
echo $week[$datetime->format("w")];
"火"
date()関数とDateTimeクラスを使用し、曜日と日時を組み合わせて、下記のように実装することが可能です。
$week = array( "日", "月", "火", "水", "木", "金", "土" );
$format1 = "Y年m月d日 (";
$format2 = ") H時i分s秒";
$str_time = "2017-08-22 14:14:20";
$timestamp = strtotime($str_time);
// date()関数を使用した表示
echo date($format1, $timestamp).$week[date('w', $timestamp)].date($format2, $timestamp);
// DateTimeクラスを使用した表示
$datetime = new DateTime($str_time);
echo $datetime->format($format1).$week[$datetime->format('w')].$datetime->format($format2);
"2017年08月22日 (火) 14時14分20秒"
"2017年08月22日 (火) 14時14分20秒"
date_format
date_format()関数を使用することでも、日時の値を指定した形式にフォーマットに変換することができます。
$week = array( "日", "月", "火", "水", "木", "金", "土" );
$timestamp = date_create("2017-08-22 14:14:20");
echo $week[date_format($timestamp, "w")];
"火"
date()関数と同じように使用することができますが、date_create()関数を使用して日時を指定する必要があることにご注意下さい。
\Webサイト担当者としてのスキルが身に付く/
まとめ
いかがだったでしょうか。phpで日本語で曜日を取得する方法について解説しました。いくつか方法がありますので、日本語で曜日を取得するような関数を1つ用意しておけば便利かもしれないですね。
- この記事を書いた人
- ベンジャミン吉澤