phpの日本語での曜日の取得の仕方

phpの日本語での曜日の取得の仕方

phpで日本語で曜日を取得するするには一工夫が必要です。また、その方法はいくつかあり、今回はその方法をサンプルソースを交え、わかりやすく解説していきます。

目次
  1. phpでの曜日の取得の方法
  2. date()関数を使用した例
  3. DateTimeクラスを利用した例
  4. phpでの指定日時の曜日の取得方法
  5. date()関数を使用した例
  6. DateTimeクラスを利用した例
  7. date_format
  8. まとめ

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()関数を使用して日時を指定する必要があることにご注意下さい。

まとめ

いかがだったでしょうか。phpで日本語で曜日を取得する方法について解説しました。いくつか方法がありますので、日本語で曜日を取得するような関数を1つ用意しておけば便利かもしれないですね。

ベンジャミン吉澤
ライター
ベンジャミン吉澤

関連記事