UPDATE:2020年07月06日
PHP date w「曜日」を取得<現在/過去/未来>
date('w')/date('w', タイムスタンプ) で 曜日 を取得する
date() が理解できる日付/時刻フォーマット文字列
date('w')で現在の 曜日 を取得
取得内容 | フォーマット文字 | 例 | 説明 |
---|---|---|---|
曜日 | D | Mon~Sun | 3文字のテキスト形式 |
l | Sunday~Saturday | フルスペル形式 | |
N | 1~7 | 数字 1(月曜) から 7(日曜) | |
w | 0~6 | 数字 0(日曜) から 6(土曜) | |
W | 1 | 数字 月曜日に始まる年単位の週番号 |
date('w') 現在の 曜日
実行日時が 2019-07-02 (水曜日) の場合、現在の曜日 を取得する。
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> |
結果は
・フルスペル形式:Wednesday
・数値。1(月)から 7(日):3
・数値。0 (日) から 6 (土):3
・月曜日に始まる年単位の週番号:27
となります。
date('w', タイムスタンプ) で任意の日付の 曜日 を取得
date() + strtotime() で任意の日付の 曜日
date()関数 と strtotime()関数 を組み合わせることで、任意の日付の曜日を取得できます。date() にUNIXタイムスタンプを指定すると、タイムスタンプの日時に合わせた日付、時刻、曜日を返します。
タイムスタンプは、strtotime() で取得できます。strtotime()関数 は、「英文形式で指定された日付や時刻のフォーマット文字列」、または、「日付/時刻のフォーマット文字列」を読み込み、結果をUNIXタイムスタンプの数値として返します。日付/時刻のフォーマットと英文形式のフォーマットを組み合わせた書式も読み込めます。
「 UNIXタイムスタンプ = strtotime('日付/時刻フォーマット文字列'); 」
「 UNIXタイムスタンプ = strtotime('英文形式の日付/時刻フォーマット文字列'); 」
任意の日付(指定日):2020/05/01 の場合、指定日の曜日 を取得する。
1 2 3 4 | <?php echo date('w', strtotime('2020-05-01'))."<br>\n"; echo date('l', strtotime('2020-05-01'))."<br>\n"; ?> |
結果は
Friday
となります。
strtotime() に指定する最も一般的な日時の書式は strtotime('2019-01-02 03:04:05'); というような形です。例では「2020-05-01」形式の日付フォーマットですが、その他にも様々なフォーマットがあります。興味のある方は以下のページを参照下さい。
strtotime() が理解できる日付/時刻のフォーマット文字列
strtotime() が理解できる英文形式フォーマット文字列
- 「02-01-2020(日-月-年)」
- 「02.01.2020(日.月.年)」
- 「01/02/20(月/日/年)」
- 「20-01-02(年-月-日)」
- 「01/02/2020(月/日/年)」
- 「Jan. 02, 2020(3文字英語月. 日, 年)」
- 「02 Jan 2020(日 3文字英語月 年)」
date() + mktime() で任意の日付の 曜日
date()関数 と mktime()関数 を組み合わせることでも、任意の日付の曜日を取得できます。
mktime()関数 は、指定した日時のUNIXタイムスタンプの数値を返します。時、分、秒、月、日、年 と日時の内容を指定します。mktime(時, 分, 秒, 月, 日, 年);
任意の日付(指定日)が 2020/05/01 の場合、指定日の曜日 を取得する。
1 2 3 4 | <?php echo date('w', mktime(0,0,0,5,1,2020))."<br>\n"; echo date('l', mktime(0,0,0,5,1,2020))."<br>\n"; ?>< |
結果は
Friday
となります。
date('w') で現在から 未来/過去 の 曜日 を取得
date() + strtotime()で取得
現在から未来の 曜日
実行日時が 2019-07-02 (水曜日) の場合、1年後の曜日 を取得する。
1 2 3 4 | <?php echo date('w', strtotime('+1 year'))."<br>\n"; echo date('l', strtotime('+1 year'))."<br>\n"; ?> |
結果は
Friday
となります。
現在から過去の 曜日
実行日時が 2019-07-02 (水曜日) の場合、1年前の曜日 を取得する。
1 2 3 4 | <?php echo date('w', strtotime('-1 year'))."<br>\n"; echo date('l', strtotime('-1 year'))."<br>\n"; ?> |
結果は
Tuesday
となります。
例では「+1 year」「-1 year」という書式の英文形式フォーマットですが、strtotime()は以下のような英文形式フォーマットも扱えます。
- 「now(今)」
- 「today(本日)」
- 「tommorw(明日)」
- 「yesterday(昨日)」
- 「+1 day(1日後 -符号もOK)」
- 「+1 week(1週間後 -符号もOK)」
- 「+1 month(1カ月後 -符号もOK)」
- 「+1 year(1年後 -符号もOK)」
- 「+1 seconds(1秒後 -符号もOK)」
- 「+1 min(1分後 -符号もOK)」
- 「+1 hours(1時間後 -符号もOK)」
さらに詳細を知りたい方
strtotime() が理解できる英文形式フォーマット文字列
date() + mktime()で取得
現在から未来の 曜日
実行日時が 2019-07-02 (水曜日) の場合、1年後の曜日 を取得する。
1 2 3 4 | <?php echo date('w', mktime(0,0,0,date('n'),date('j'),date('Y')+1))."<br>\n"; echo date('l', mktime(0,0,0,date('n'),date('j'),date('Y')+1))."<br>\n"; ?> |
結果は
Friday
となります。
現在から過去の 曜日
実行日時が 2019-07-02 (水曜日) の場合、1年前の曜日 を取得する。
1 2 3 4 | <?php echo date('w', mktime(0,0,0,date('n'),date('j'),date('Y')-1))."<br>\n"; echo date('l', mktime(0,0,0,date('n'),date('j'),date('Y')-1))."<br>\n"; ?> |
結果は
Tuesday
となります。
date('w', タイムスタンプ) で任意の日付から 来年/過去 の年を取得
date() + strtotime()で取得
日付/時刻のフォーマットと英文形式のフォーマットを組み合わせて、任意の日付から未来や過去の曜日を取得できます。
任意の日付から来年の 曜日
任意の日付(指定日) 2018/05/01 の場合、その日付から 1年後 の曜日を取得する。
1 2 3 4 | <?php echo date('w', strtotime('2018-05-01 +1 year'))."<br>\n"; echo date('l', strtotime('2018-05-01 +1 year'))."<br>\n"; ?> |
結果は
Wednesday
となります。
任意の日付から過去の 曜日
任意の日付(指定日) 2018/05/01 の場合、その日付から 1年前 の曜日を取得する。
1 2 3 4 | <?php echo date('w', strtotime('2018-05-01 -1 year'))."<br>\n"; echo date('l', strtotime('2018-05-01 -1 year'))."<br>\n"; ?> |
結果は
Monday
となります。
例では「2018-05-01」形式の日付フォーマットですが、strtotime()は以下のような日付フォーマットも扱えます。
- 「02-01-2020(日-月-年)」
- 「02.01.2020(日.月.年)」
- 「01/02/20(月/日/年)」
- 「20-01-02(年-月-日)」
- 「01/02/2020(月/日/年)」
- 「Jan. 02, 2020(3文字英語月. 日, 年)」
- 「02 Jan 2020(日 3文字英語月 年)」
さらに詳細を知りたい方
strtotime() が理解できる日付/時刻のフォーマット文字列
date() + mktime()で取得
任意の日付から来年の 曜日
任意の日付(指定日) 2018/05/01 の場合、その日付から 1年後 の曜日を取得する。
1 2 3 4 | <?php echo date('w', mktime(0,0,0,5,1,2018+1))."<br>\n"; echo date('l', mktime(0,0,0,5,1,2018+1))."<br>\n"; ?> |
結果は
となります。
任意の日付から過去の 曜日
任意の日付(指定日) 2018/05/01 の場合、その日付から 1年前 の曜日を取得する。
1 2 3 4 | <?php echo date('w', mktime(0,0,0,5,1,2018-1))."<br>\n"; echo date('l', mktime(0,0,0,5,1,2018-1))."<br>\n"; ?> |
結果は
Monday
となります。
使用する関数とタイムゾーン
php.ini に記述する場合
書式 date()
日時の文字列 = date('日付/時刻フォーマット文字列' [,UNIXタイムスタンプ]);
//[ ]省略可(タイムスタンプがない場合現在日時となる)
//返り値は文字列(string)
date() が理解できる日付/時刻フォーマット文字列
書式 strtotime()
指定日時のUNIXタイムスタンプ = strtotime('英文形式 OR 日付/時刻 フォーマット文字列');
//返り値は数値(int)、失敗時は FALSE を返す
strtotime() が理解できる英文形式フォーマット文字列
strtotime() が理解できる日付/時刻のフォーマット文字列
書式 mktime()
指定日時のUNIXタイムスタンプ = mktime(時, 分, 秒, 月, 日, 年);
//返り値は数値(int)、失敗時は FALSE を返す
タグ(=記事関連ワード)
日付
最終更新日:2020年07月06日