UPDATE:2019年06月18日
PHP 先週の日付を取得したい
先週の日付を取得)
php.ini に記述する場合
書式 date()
日時の文字列 = date('日付/時刻フォーマット文字列' [,UNIXタイムスタンプ]);
//[ ]省略可(タイムスタンプがない場合現在日時となる)
//返り値は文字列(string)
date() が理解できる日付/時刻フォーマット文字列
書式 strtotime()
指定日時のUNIXタイムスタンプ = strtotime('英文形式 OR 日付/時刻 フォーマット文字列');
//返り値は数値(int)、失敗時は FALSE を返す
strtotime() が理解できる英文形式フォーマット文字列
strtotime() が理解できる日付/時刻のフォーマット文字列
書式 mktime()
指定日時のUNIXタイムスタンプ = mktime(時, 分, 秒, 月, 日, 年);
//返り値は数値(int)、失敗時は FALSE を返す
書式 DateTimeクラス
オブジェクト = new DateTime(['英文形式 OR 日付/時刻のフォーマット文字列']);
//[ ]は省略可能です。
DateTimeクラス が理解できる英文形式フォーマット文字列
DateTimeクラス が理解できる日付/時刻のフォーマット文字列
DateTime format()メソッド が理解できるフォーマット文字列
サンプル
1 2 3 4 5 6 7 8 9 | <?php //strtotime echo date('Y-m-d', strtotime('-1 week'));//先週 //mktime echo date('Y-m-d', mktime(0,0,0,date('n'),date('j')-7,date('Y')));//先週 //DateTime $objDateTime = new DateTime('-1 week');//先週 echo $objDateTime->format('Y-m-d'); ?> |
現在から先週の日付を取得
date() + strtotime()で取得
date()関数 と strtotime()関数 を組み合わせることで、任意の日付を取得できます。
date()関数 は、指定した日付や時刻のフォーマット文字列から、現在や任意の日付や時間の文字列を返します「 日時の文字列 = date('日付/時刻のフォーマット文字列'); 」。オプションでUNIXタイムスタンプを指定すると指定したタイムスタンプに合わせた日時の文字列を返します「 日時の文字列 = date('日付/時刻のフォーマット文字列', UNIXタイムスタンプ); 」。タイムスタンプを省略すると現在日時となります。
date() が理解できる日付/時刻フォーマット文字列
タイムスタンプは、strtotime() で取得できます。strtotime()関数 は、「英文形式で指定された日付や時刻のフォーマット文字列」、または、「日付/時刻のフォーマット文字列」を読み込み、結果をUNIXタイムスタンプの数値として返します。
「 UNIXタイムスタンプ = strtotime('英文形式の日付/時刻フォーマット文字列'); 」
「 UNIXタイムスタンプ = strtotime('日付/時刻フォーマット文字列'); 」
strtotime() に指定する最も一般的な日時の書式は strtotime('2019-01-02 03:04:05'); というような形です。その他にも様々なフォーマットがあります。興味のある方は以下のページを参照下さい。
strtotime() が理解できる英文形式フォーマット文字列
strtotime() が理解できる日付/時刻のフォーマット文字列
2019/05/16 に実行した場合。
1 2 3 | <?php echo date('Y-m-d', strtotime('-1 week'));//先週 ?> |
結果は
となります。
例では「-1 week」という書式の英文形式フォーマットですが、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()で取得
mktime()関数 は、指定した日時のUNIXタイムスタンプの数値を返します。時、分、秒、月、日、年 と日時の内容を指定します。mktime(時, 分, 秒, 月, 日, 年);
2019/05/16 に実行した場合。
1 2 3 | <?php echo date('Y-m-d', mktime(0,0,0,date('n'),date('j')-7,date('Y')));//先週 ?> |
結果は
となります。
DateTimeクラスで取得
DateTimeクラスは様々な日付や時刻を表現できるクラスです。DateTimeクラスを呼び出しオブジェクト(インスタンス)を作成します「 オブジェクト = new DateTime(); 」。DateTimeクラスを呼び出す際に日付や時刻を指定することも出来ます「 オブジェクト = new DateTime('日付/時刻のフォーマット文字列'); 」。省略した場合は現在の日時になります。DateTimeクラスに指定する日時の書式は DateTime('2019-01-02 03:04:05'); というような形です。また、英文形式フォーマット文字列も理解可能で、その他にも様々なフォーマットがあります。興味のある方は以下のページを参照下さい。
DateTimeクラス が理解できる英文形式フォーマット文字列
DateTimeクラス が理解できる日付/時刻のフォーマット文字列
DateTimeクラスのformat()メソッドは、指定した日付や時刻のフォーマット文字列から日時の文字列を返します「 日時の文字列 = オブジェクト->format('日付/時刻のフォーマット文字列'); 」。成功すると日時の文字列を返し、失敗すると FALSE を返します。format()メソッドで指定する日時のフォーマット文字列はdate()関数で指定するフォーマットと同じです。
DateTime format()メソッド が理解できるフォーマット文字列
2019/05/16 に実行した場合。
1 2 3 4 | <?php $objDateTime = new DateTime('-1 week');//先週 echo $objDateTime->format('Y-m-d'); ?> |
結果は
となります。
- 「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)」
さらに詳細を知りたい方
DateTimeクラス が理解できる英文形式フォーマット文字列
指定日から先週の日付を取得
date() + strtotime()で取得
2018/05/01 を指定日にした場合。
1 2 3 | <?php echo date('Y-m-d', strtotime('2018-05-01 -1 week'));//先週 ?> |
結果は
となります。
例では「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 2 3 | <?php echo date('Y-m-d', mktime(0,0,0,5,1-7,2018));//先週 ?> |
結果は
となります。
DateTimeクラスで取得
2018/05/01 を指定日にした場合。
1 2 3 4 | <?php $objDateTime = new DateTime('2018-05-01 -1 week');//先週 echo $objDateTime->format('Y-m-d'); ?> |
結果は
となります。
例では「2018-05-01」形式の日付フォーマットですが、DateTimeクラスは以下のような日付フォーマットも扱えます。
- 「02-01-2020(日-月-年)」
- 「02.01.2020(日.月.年)」
- 「01/02/20(月/日/年)」
- 「20-01-02(年-月-日)」
- 「01/02/2020(月/日/年)」
- 「Jan. 02, 2020(3文字英語月. 日, 年)」
- 「02 Jan 2020(日 3文字英語月 年)」
さらに詳細を知りたい方
DateTimeクラス が理解できる日付/時刻のフォーマット文字列
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <!-- サンプルコード --> <h3>先週の日付</h3> ・<b><?php echo date('Y-m-d', strtotime('-1 week')); ?></b><br> ・<b><?php echo date('Y-m-d', mktime(0,0,0,date('n'),date('j')-7,date('Y'))); ?></b> <hr/> <h3>先週の年</h3> ・年。4 桁の数字。 <b><?php echo date('Y', strtotime('-1 week')); ?></b><br> ・年。2 桁の数字。 <b><?php echo date('y', strtotime('-1 week')); ?></b><br> <h3>先週の月</h3> ・月。フルスペルの文字。 <b><?php echo date('F', strtotime('-1 week')); ?></b><br> ・月。数字。先頭にゼロをつける。 <b><?php echo date('m', strtotime('-1 week')); ?></b><br> ・月。3 文字形式 <b><?php echo date('M', strtotime('-1 week')); ?></b><br> ・月。数字。先頭にゼロをつけない。 <b><?php echo date('n', strtotime('-1 week')); ?></b><br> ・指定した月の日数。 <b><?php echo date('t', strtotime('-1 week')); ?></b><br> <h3>先週の日</h3> ・日。二桁の数字(先頭にゼロがつく場合も) <b><?php echo date('d', strtotime('-1 week')); ?></b><br> ・日。先頭にゼロをつけない。 <b><?php echo date('j', strtotime('-1 week')); ?></b><br> <h3>先週の曜日</h3> ・曜日。3文字のテキスト形式。 <b><?php echo date('D', strtotime('-1 week')); ?></b><br> ・曜日。フルスペル形式。 <b><?php echo date('l', strtotime('-1 week')); ?></b><br> ・曜日。数値。 <b><?php echo date('w', strtotime('-1 week')); ?></b><br> |
先週の日付
・2019-05-09
・2019-05-09
先週の年
・年。4 桁の数字。 2019
・年。2 桁の数字。 19
先週の月
・月。フルスペルの文字。 May
・月。数字。先頭にゼロをつける。 05
・月。3 文字形式 May
・月。数字。先頭にゼロをつけない。 5
・指定した月の日数。 31
先週の日
・日。二桁の数字(先頭にゼロがつく場合も) 09
・日。先頭にゼロをつけない。 9
先週の曜日
・曜日。3文字のテキスト形式。 Thu
・曜日。フルスペル形式。 Thursday
・曜日。数値。 4
タグ(=記事関連ワード)
日付
最終更新日:2019年06月18日