UPDATE:2019年06月24日
PHP 曜日を取得<現在/任意の日付>
date() と strtotime() の組み合わせで自由に曜日を取得
php.ini に記述する場合
書式 date()
日時の文字列 = date('日付/時刻フォーマット文字列' [,UNIXタイムスタンプ]);
//[ ]省略可(タイムスタンプがない場合現在日時となる)
//返り値は文字列(string)
date() が理解できる日付/時刻フォーマット文字列
書式 DateTimeクラス
オブジェクト = new DateTime(['英文形式 OR 日付/時刻のフォーマット文字列']);
//[ ]は省略可能です。
DateTimeクラス が理解できる英文形式フォーマット文字列
DateTimeクラス が理解できる日付/時刻のフォーマット文字列
DateTime format()メソッド が理解できるフォーマット文字列
書式 strtotime()
指定日時のUNIXタイムスタンプ = strtotime('英文形式 OR 日付/時刻 フォーマット文字列');
//返り値は数値(int)、失敗時は FALSE を返す
strtotime() が理解できる英文形式フォーマット文字列
strtotime() が理解できる日付/時刻のフォーマット文字列
書式 mktime()
指定日時のUNIXタイムスタンプ = mktime(時, 分, 秒, 月, 日, 年);
//返り値は数値(int)、失敗時は FALSE を返す
サンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php //本日の曜日 date() echo date('D')."<br>\n";//出力 Fri //本日の曜日 DateTimeクラス $objDateTime = new DateTime(); echo $objDateTime->format('l')."<br>\n";//出力 Friday //指定日の曜日 date() × strtotime() echo date('D', strtotime('2019-01-01'))."<br>\n";//出力 Tue //指定日の曜日 date() × mktime() echo date('D', mktime(0,0,0,'01','01','2019'))."<br>\n";//出力 Tue //指定日の曜日 DateTimeクラス $objDateTime = new DateTime('2019-01-01'); echo $objDateTime->format('l')."<br>\n";//出力 Tuesday ?> |
曜日を取得<本日(現在)>
本日の曜日を取得してみましょう。
date() で取得
date()関数 は、指定した日付や時刻のフォーマット文字列から日時や曜日の文字列を返します「 日時の文字列 = date('日付/時刻のフォーマット文字列'); 」。オプションでUNIXタイムスタンプを指定すると、指定したタイムスタンプに合わせた日時や曜日の文字列を返します「 日時の文字列 = date('日付/時刻のフォーマット文字列', UNIXタイムスタンプ); 」。タイムスタンプを省略すると現在日時となります。
date() 曜日のフォーマット文字列
取得内容 | フォーマット文字 | 例 | 説明 |
---|---|---|---|
曜日 | D | Mon~Sun | 3文字のテキスト形式 |
l | Sunday~Saturday | フルスペル形式 | |
N | 1~7 | 数字 1(月曜) から 7(日曜) | |
w | 0~6 | 数字 0(日曜) から 6(土曜) | |
W | 1 | 数字 月曜日に始まる年単位の週番号 |
その他の date() のフォーマット文字列は、date() が理解できる日付/時刻フォーマット文字列 をご覧下さい。
現在の曜日を取得
date() で現在の曜日を取得してみます。フォーマットに合わせて様々な形式で曜日を出力します。
実行日時 2019-01-01(火曜日) の場合
1 2 3 4 5 | ・3文字のテキスト形式:<?php echo date('D'); ?><br> ・フルスペル形式:<?php echo date('l'); ?><br> ・数値。1(月)から 7(日):<?php echo date('N'); ?><br> ・数値。0 (日) から 6 (土):<?php echo date('w'); ?><br> ・月曜日に始まる年単位の週番号:<?php echo date('W'); ?><br> |
結果は
・フルスペル形式:Tuesday
・数値。1(月)から 7(日):2
・数値。0 (日) から 6 (土):2
・月曜日に始まる年単位の週番号:01
となります。
現在の曜日を日本語で取得する
簡単な関数を作成して、引数に date('w') を利用することで、日本語で曜日を取得します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php function day_of_the_week($w){ $aWeek = array( '日曜日',//0 '月曜日',//1 '火曜日',//2 '水曜日',//3 '木曜日',//4 '金曜日',//5 '土曜日'//6 ); return $aWeek["$w"]; } ?> <?php echo day_of_the_week(date('w')); ?> |
実行日時 2019-01-01(火曜日) の場合、結果は
となります。
DateTimeクラス で 曜日 を取得
DateTimeクラスは様々な日付や時刻、曜日を表現できるクラスです。DateTimeクラスを呼び出し、オブジェクト(インスタンス)を作成します「 オブジェクト = new DateTime(); 」。DateTimeクラスを呼び出す際に日付や時刻を指定することも出来ます「 オブジェクト = new DateTime('日付/時刻のフォーマット文字列'); 」。省略した場合は、現在の日時や曜日になります。オブジェクトのformat()メソッドは、指定した日付や時刻のフォーマット文字列から日時や曜日の文字列を返します「 日時の文字列 = オブジェクト->format('日付/時刻のフォーマット文字列'); 」。成功すると日時の文字列を返し、失敗すると FALSE を返します。format()メソッドで指定する日時のフォーマット文字列はdate()関数で指定するフォーマットと同じです。
DateTime format()メソッド が理解できるフォーマット文字列
DateTimeクラス format()メソッド の曜日フォーマット文字列
取得内容 | フォーマット文字 | 説明 | 戻り値の例 |
---|---|---|---|
曜日 | D | 3文字のテキスト形式 | Mon~Sun |
l | フルスペル形式 | Sunday~Saturday | |
N | 数字 | 1(月曜) から 7(日曜) | |
w | 数字 | 0(日曜) から 6(土曜) | |
W | 数字 | 月曜日に始まる年単位の週番号 | |
$objDateTime = new DateTime();
echo $objDateTime->format('D');//Wed
echo $objDateTime->format('l');//Wednesday
echo $objDateTime->format('N');//3
echo $objDateTime->format('w');//3
echo $objDateTime->format('W');//21
|
現在の曜日を取得
DateTimeクラス format()メソッド で現在の曜日を取得します。フォーマット文字列に合わせて曜日の文字列が出力されます。
実行日時 2019-01-01(火曜日) の場合
1 2 3 4 5 6 7 8 9 | <?php //本日の曜日 DateTimeクラス $objDateTime = new DateTime(); ?> ・3文字のテキスト形式:<?php echo $objDateTime->format('D'); ?><br> ・フルスペル形式:<?php echo $objDateTime->format('l'); ?><br> ・数値。1(月)から 7(日):<?php echo $objDateTime->format('N'); ?><br> ・数値。0 (日) から 6 (土):<?php echo $objDateTime->format('w'); ?><br> ・月曜日に始まる年単位の週番号:<?php echo $objDateTime->format('W'); ?><br> |
結果は
・フルスペル形式:Tuesday
・数値。1(月)から 7(日):2
・数値。0 (日) から 6 (土):2
・月曜日に始まる年単位の週番号:01
となります。
DateTimeクラス 現在の曜日を日本語で取得する
DateTimeクラスでも、日本語で曜日を取得してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <?php function day_of_the_week_dtcls($w){ $aWeek = array( '日曜日',//0 '月曜日',//1 '火曜日',//2 '水曜日',//3 '木曜日',//4 '金曜日',//5 '土曜日'//6 ); return $aWeek["$w"]; } ?> <?php //クラスの呼び出し $objDateTime = new DateTime(); //関数実行 echo day_of_the_week_dtcls($objDateTime->format('w')); ?> |
曜日を取得<本日(現在)から+何日後 -何日前>
本日から+1日後の曜日
実行日時 2019-01-01(火曜日) の場合
date() + strtotime() で取得
1 | ・フルスペル形式:<?php echo date('l', strtotime('+1 day')); ?><br> |
※マイナス – を指定すれば昨日
結果は
となります。
date() + mktime() で取得
1 | ・フルスペル形式:<?php echo date('l', mktime(0,0,0,date('n'),date('j')+1,date('Y'))); ?><br> |
※マイナス – を指定すれば昨日
結果は
となります。
DateTimeクラス で取得
1 | ・フルスペル形式:<?php $objDateTime = new DateTime('+1 day'); echo $objDateTime->format('l'); ?><br> |
※マイナス – を指定すれば昨日
結果は
となります。
本日から+1週間後の曜日
実行日時 2019-01-01(火曜日) の場合
date() + strtotime() で取得
1 | ・フルスペル形式:<?php echo date('l', strtotime('+1 week')); ?><br> |
※マイナス – を指定すれば先週
結果は
となります。
date() + mktime() で取得
1 | ・フルスペル形式:<?php echo date('l', mktime(0,0,0,date('n'),date('j')+7,date('Y'))); ?><br> |
※マイナス – を指定すれば先週
結果は
となります。
DateTimeクラス で取得
1 | ・フルスペル形式:<?php $objDateTime = new DateTime('+1 week'); echo $objDateTime->format('l'); ?><br> |
※マイナス – を指定すれば先週
結果は
となります。
本日から+1カ月後の曜日
実行日時 2019-01-01(火曜日) の場合
date() + strtotime() で取得
1 | ・フルスペル形式:<?php echo date('l', strtotime('+1 month')); ?><br> |
※マイナス – を指定すれば先月
結果は
となります。
date() + mktime() で取得
1 | ・フルスペル形式:<?php echo date('l', mktime(0,0,0,date('n')+1,date('j'),date('Y'))); ?><br> |
※マイナス – を指定すれば先月
結果は
となります。
DateTimeクラス で取得
1 | ・フルスペル形式:<?php $objDateTime = new DateTime('+1 month'); echo $objDateTime->format('l'); ?><br> |
※マイナス – を指定すれば先月
結果は
となります。
本日から+1年後の曜日
実行日時 2019-01-01(火曜日) の場合
date() + strtotime() で取得
1 | ・フルスペル形式:<?php echo date('l', strtotime('+1 year')); ?><br> |
※マイナス – を指定すれば去年
結果は
となります。
date() + mktime() で取得
1 | ・フルスペル形式:<?php echo date('l', mktime(0,0,0,date('n'),date('j'),date('Y')+1)); ?><br> |
※マイナス – を指定すれば去年
結果は
となります。
DateTimeクラス で取得
1 | ・フルスペル形式:<?php $objDateTime = new DateTime('+1 year'); echo $objDateTime->format('l'); ?><br> |
※マイナス – を指定すれば去年
結果は
となります。
本日から+1秒、+2分、+3時間、+4日、+5カ月、+6年後の曜日
実行日時 2019-01-01(火曜日) の場合
date() + strtotime() で取得
1 | ・フルスペル形式:<?php echo date('l', strtotime("+1 seconds +2 min +3 hours +4 day +5 month +6 year")); ?><br> |
結果は
となります。
date() + mktime() で取得
1 | ・フルスペル形式:<?php echo date('l', mktime(date('H')+3,date('i')+2,date('s')+1,date('n')+5,date('j')+4,date('Y')+6)); ?><br> |
結果は
となります。
DateTimeクラス で取得
1 | ・フルスペル形式:<?php $objDateTime = new DateTime('+1 seconds +2 min +3 hours +4 day +5 month +6 year'); echo $objDateTime->format('l'); ?><br> |
結果は
となります。
曜日を取得<任意の日付(指定日)>
date() + strtotime() で取得
指定日 2020-01-01(水曜日) の場合
1 2 3 4 5 | ・3文字のテキスト形式:<?php echo date('D', strtotime('2020-01-01')); ?><br> ・フルスペル形式:<?php echo date('l', strtotime('2020-01-01')); ?><br> ・数値。1(月)から 7(日):<?php echo date('N', strtotime('2020-01-01')); ?><br> ・数値。0 (日) から 6 (土):<?php echo date('w', strtotime('2020-01-01')); ?><br> ・月曜日に始まる年単位の週番号:<?php echo date('W', strtotime('2020-01-01')); ?><br> |
結果は
・フルスペル形式:Wednesday
・数値。1(月)から 7(日):3
・数値。0 (日) から 6 (土):3
・月曜日に始まる年単位の週番号:01
となります。
date() + mktime() で取得
指定日 2020-01-01(水曜日) の場合
1 2 3 4 5 | ・3文字のテキスト形式:<?php echo date('D', mktime(0,0,0,1,1,2020)); ?><br> ・フルスペル形式:<?php echo date('l', mktime(0,0,0,1,1,2020)); ?><br> ・数値。1(月)から 7(日):<?php echo date('N', mktime(0,0,0,1,1,2020)); ?><br> ・数値。0 (日) から 6 (土):<?php echo date('w', mktime(0,0,0,1,1,2020)); ?><br> ・月曜日に始まる年単位の週番号:<?php echo date('W', mktime(0,0,0,1,1,2020)); ?><br> |
結果は
・フルスペル形式:Wednesday
・数値。1(月)から 7(日):3
・数値。0 (日) から 6 (土):3
・月曜日に始まる年単位の週番号:01
となります。
DateTimeクラス で取得
指定日 2020-01-01(水曜日) の場合
1 2 3 4 5 6 | <?php $objDateTime = new DateTime('2020-01-01'); ?> ・3文字のテキスト形式:<?php echo $objDateTime->format('D'); ?><br> ・フルスペル形式:<?php echo $objDateTime->format('l'); ?><br> ・数値。1(月)から 7(日):<?php echo $objDateTime->format('N'); ?><br> ・数値。0 (日) から 6 (土):<?php echo $objDateTime->format('w'); ?><br> ・月曜日に始まる年単位の週番号:<?php echo $objDateTime->format('W'); ?><br> |
結果は
・フルスペル形式:Wednesday
・数値。1(月)から 7(日):3
・数値。0 (日) から 6 (土):3
・月曜日に始まる年単位の週番号:01
となります。
曜日を取得<任意の日付(指定日)から+何日後-何日前>
任意の日付(指定日)から+1日後の曜日
date() + strtotime() で取得
指定日 2020-01-01(水曜日) の場合
1 | ・フルスペル形式:<?php echo date('l', strtotime('2020-01-01 +1 day')); ?><br> |
※マイナス – を指定すれば昨日
結果は
となります。
date() + mktime() で取得
指定日 2020-01-01(水曜日) の場合
1 | ・フルスペル形式:<?php echo date('l', mktime(0,0,0,1,1+1,2020)); ?><br> |
※マイナス – を指定すれば昨日
結果は
となります。
DateTimeクラス で取得
指定日 2020-01-01(水曜日) の場合
1 | ・フルスペル形式:<?php $objDateTime = new DateTime('2020-01-01 +1 day'); echo $objDateTime->format('l'); ?><br> |
※マイナス – を指定すれば昨日
結果は
となります。
任意の日付(指定日)から+1週間後の曜日
date() + strtotime() で取得
指定日 2020-01-01(水曜日) の場合
1 | ・フルスペル形式:<?php echo date('l', strtotime('2020-01-01 +1 week')); ?><br> |
※マイナス – を指定すれば先週
結果は
となります。
date() + mktime() で取得
指定日 2020-01-01(水曜日) の場合
1 | ・フルスペル形式:<?php echo date('l', mktime(0,0,0,1,1+7,2020)); ?><br> |
※マイナス – を指定すれば先週
結果は
となります。
DateTimeクラス で取得
指定日 2020-01-01(水曜日) の場合
1 | ・フルスペル形式:<?php $objDateTime = new DateTime('2020-01-01 +1 week'); echo $objDateTime->format('l'); ?><br> |
※マイナス – を指定すれば先週
結果は
となります。
任意の日付(指定日)から+1カ月後の曜日
date() + strtotime() で取得
指定日 2020-01-01(水曜日) の場合
1 | ・フルスペル形式:<?php echo date('l', strtotime('2020-01-01 +1 month')); ?><br> |
※マイナス – を指定すれば先月
結果は
となります。
date() + mktime() で取得
指定日 2020-01-01(水曜日) の場合
1 | ・フルスペル形式:<?php echo date('l', mktime(0,0,0,1+1,1,2020)); ?><br> |
※マイナス – を指定すれば先月
結果は
となります。
DateTimeクラス で取得
指定日 2020-01-01(水曜日) の場合
1 | ・フルスペル形式:<?php $objDateTime = new DateTime('2020-01-01 +1 month'); echo $objDateTime->format('l'); ?><br> |
※マイナス – を指定すれば先月
結果は
となります。
任意の日付(指定日)から+1年後の曜日
date() + strtotime() で取得
指定日 2020-01-01(水曜日) の場合
1 | ・フルスペル形式:<?php echo date('l', strtotime('2020-01-01 +1 year')); ?><br> |
※マイナス – を指定すれば去年
結果は
となります。
date() + mktime() で取得
指定日 2020-01-01(水曜日) の場合
1 | ・フルスペル形式:<?php echo date('l', mktime(0,0,0,1,1,2020+1)); ?><br> |
※マイナス – を指定すれば去年
結果は
となります。
DateTimeクラス で取得
指定日 2020-01-01(水曜日) の場合
1 | ・フルスペル形式:<?php $objDateTime = new DateTime('2020-01-01 +1 year'); echo $objDateTime->format('l'); ?><br> |
※マイナス – を指定すれば去年
結果は
となります。
任意の日付(指定日)から+1秒、+2分、+3時間、+4日、+5カ月、+6年後の曜日
date() + strtotime() で取得
指定日 2020-01-01(水曜日) の場合
1 | ・フルスペル形式:<?php echo date('l', strtotime('2020-01-01 00:00:00 +1 seconds +2 min +3 hours +4 day +5 month +6 year')); ?><br> |
結果は
となります。
date() + mktime() で取得
指定日 2020-01-01(水曜日) の場合
1 | ・フルスペル形式:<?php echo date('l', mktime(0+3,0+2,0+1,1+5,1+4,2020+6)); ?><br> |
結果は
となります。
DateTimeクラス で取得
指定日 2020-01-01(水曜日) の場合
1 | ・フルスペル形式:<?php $objDateTime = new DateTime('2020-01-01 00:00:00 +1 seconds +2 min +3 hours +4 day +5 month +6 year'); echo $objDateTime->format('l'); ?><br> |
結果は
となります。
タグ(=記事関連ワード)
日付
最終更新日:2019年06月24日