UPDATE:
PHP 過去の日付や時間を取得したい
過去の日付や時間を取得する
php.ini に記述する場合
書式 date()
日時の文字列 = date('日付/時刻フォーマット文字列' [,UNIXタイムスタンプ]);
//[ ]省略可(タイムスタンプがない場合過去日時となる)
//返り値は文字列(string)
date() が理解できる日付/時刻フォーマット文字列
1 2 3 4 5 6 | <?php //現在が 2019-07-02 12:41:54 の場合 昨日の日付 echo date('Y-m-d', strtotime('-1 day'))."<br>\n"; //昨日の日付 2019-07-01 echo date('H:i:s', strtotime('-1 day'))."<br>\n"; //昨日の時間 12:41:54 echo date('Y-m-d H:i:s', strtotime('-1 day'))."<br>\n"; //昨日の日時 2019-07-01 12:41:54 ?> |
書式 DateTimeクラス
オブジェクト = new DateTime(['英文形式 OR 日付/時刻のフォーマット文字列']);
//[ ]は省略可能です。
DateTimeクラス が理解できる英文形式フォーマット文字列
DateTimeクラス が理解できる日付/時刻のフォーマット文字列
DateTime format()メソッド が理解できるフォーマット文字列
1 2 3 4 5 6 7 | <?php //現在が 2019-07-02 12:41:54 の場合 昨日の日付 $objDateTime = new DateTime('-1 day'); echo $objDateTime->format('Y-m-d')."<br>\n";//昨日の日付 2019-07-01 echo $objDateTime->format('H:i:s')."<br>\n";//昨日の時間 12:41:54 echo $objDateTime->format('Y-m-d H:i:s')."<br>\n";//昨日の日時 2019-07-01 12:41:54 ?> |
書式 strtotime()
指定日時のUNIXタイムスタンプ = strtotime('英文形式 OR 日付/時刻 フォーマット文字列');
//返り値は数値(int)、失敗時は FALSE を返す
strtotime() が理解できる英文形式フォーマット文字列
strtotime() が理解できる日付/時刻のフォーマット文字列
書式 mktime()
指定日時のUNIXタイムスタンプ = mktime(時, 分, 秒, 月, 日, 年);
//返り値は数値(int)、失敗時は FALSE を返す
date() や DateTimeクラス format()メソッド の日付/時刻フォーマット文字列 簡易表
取得内容 | フォーマット文字 | 例 | 説明 |
---|---|---|---|
年 | Y | 1999 や 2020 | 年 4 桁の数字 |
y | 99 や 19 | 年 2 桁の数字 | |
L | 1 か 0 | 閏年かどうか。1なら閏年。0なら閏年ではない | |
月 | F | January~December | 月 フルスペルの文字 |
m | 01~12 | 月 数字。先頭にゼロをつける | |
M | Jan~Dec | 月 3 文字形式 | |
n | 1~12 | 月 数字。先頭にゼロをつけない | |
t | 28~31 | 月 指定した月の日数 | |
日 | d | 01~31 | 日 2桁の数字(先頭にゼロがつく場合も) |
j | 1~31 | 日 数字。先頭にゼロをつけない | |
曜日 | D | Mon~Sun | 3文字のテキスト形式 |
l | Sunday~Saturday | フルスペル形式 | |
N | 1~7 | 数字 1(月曜) から 7(日曜) | |
w | 0~6 | 数字 0(日曜) から 6(土曜) | |
W | 1 | 数字 月曜日に始まる年単位の週番号 | |
時 | g | 1~12 | 12時間単位。先頭ゼロなし |
G | 0~23 | 24時間単位。先頭ゼロなし | |
h | 01~12 | 12時間単位。先頭ゼロあり | |
H | 00~23 | 24時間単位。先頭ゼロあり | |
a | am pm | 午前/午後。小文字表示 | |
A | AM PM | 午前/午後。大文字表示 | |
分 | i | 00~59 | 先頭ゼロあり |
秒 | s | 00~59 | 先頭ゼロあり |
全日付 | c | 2020-05-15T01:04:54+09:00 | ISO8601 フォーマット日付 |
r | Wed, 15 May 2020 01:04:54 +0900 | RFC2822 フォーマット日付 |
過去の日時を取得
date() で過去の日付や時間を取得する
date()関数 は、指定した「日付や時刻のフォーマット文字列」から「日時の文字列」を返します「 日時の文字列 = date('日付/時刻のフォーマット文字列'); 」。
例えば
1 | <?php echo date('Y');//出力 2019 ?> |
とすると、現在の「年」(4桁)が取得できます。「Y」は4桁の年数を表す「日付や時刻のフォーマット文字列」です。
オプションでUNIXタイムスタンプを指定すると、指定したタイムスタンプに合わせた日時の文字列を返します「 日時の文字列 = date('日付/時刻のフォーマット文字列', UNIXタイムスタンプ); 」。タイムスタンプは、strtotime()関数 や mktime()関数 で取得できます。タイムスタンプを省略すると現在日時となります。
1 | <?php echo date('Y', strtotime('-5 year'));//出力 2014 ?> |
オプションのタイムスタンプで5年前のタイムスタンプを指定します。結果は現在から5年前の過去の「年」(4桁)が取得できます。
date() の「年 月 日 時 分 秒」を表現するフォーマット文字列を使用すると、過去の日時を取得することが出来ます。
5年前を指定してみます。
実行日時が 2019-07-02 12:41:54 の場合
1 2 3 4 5 | <?php echo date('Y-m-d', strtotime('-5 year'))."<br>\n";//過去日付 2014-07-02 echo date('H:i:s', strtotime('-5 year'))."<br>\n";//過去時間 12:41:54 echo date('Y-m-d H:i:s', strtotime('-5 year'))."<br>\n";//過去日時 2014-07-02 12:41:54 ?> |
結果は
12:41:54
2014-07-02 12:41:54
となります。
DateTimeクラス で過去の日付や時間を取得する
DateTimeクラスは様々な日付や時刻を表現できるクラスです。DateTimeクラスを呼び出しオブジェクト(インスタンス)を作成します「 オブジェクト = new DateTime(); 」。DateTimeクラスを呼び出す際に日付や時刻を指定することも出来ます「 オブジェクト = new DateTime('日付/時刻のフォーマット文字列'); 」。指定することで、過去の日時を取得できます。省略した場合は現在の日時になります。オブジェクトのformat()メソッドは、指定した日付や時刻のフォーマット文字列から日時の文字列を返します「 日時の文字列 = オブジェクト->format('日付/時刻のフォーマット文字列'); 」。成功すると日時の文字列を返し、失敗すると FALSE を返します。format()メソッドで指定する日時のフォーマット文字列はdate()関数で指定するフォーマットと同じです。
実行日時が 2019-07-02 12:41:54 の場合
5年前を指定してみます。
1 2 3 4 5 6 7 8 9 | <?php //クラスを呼び出してオブジェクトを作成 過去の日時を指定 $objDateTime = new DateTime('-5 year'); //format()メソッドで過去日時を出力 echo $objDateTime->format('Y-m-d')."<br>\n";//過去日付 2024-07-01 echo $objDateTime->format('H:i:s')."<br>\n";//過去時間 10:17:59 echo $objDateTime->format('Y-m-d H:i:s')."<br>\n";//過去日時 2024-07-01 10:17:59 ?> |
結果は
12:41:54
2014-07-02 12:41:54
となります。
過去の 年 取得
date() + strtotime() で 過去の年 取得
date()関数 の第2引数に過去の日時のタイムスタンプを入力することで、過去の日時を取得できます。
タイムスタンプは、strtotime() で取得できます。strtotime()関数 は、「英文形式で指定された日付や時刻のフォーマット文字列」、または、「日付/時刻のフォーマット文字列」を読み込み、結果をUNIXタイムスタンプの数値として返します。
「 UNIXタイムスタンプ = strtotime('英文形式の日付/時刻フォーマット文字列'); 」
「 UNIXタイムスタンプ = strtotime('日付/時刻フォーマット文字列'); 」
strtotime() に指定する最も一般的な日時の書式は strtotime('2019-01-02 03:04:05'); というような形です。その他にも様々なフォーマットがあります。興味のある方は以下のページを参照下さい。
strtotime() が理解できる英文形式フォーマット文字列
strtotime() が理解できる日付/時刻のフォーマット文字列
実行日時が 2019-07-02 12:41:54 火曜日 の場合
5年前の年を取得する。
1 2 | ・Y 年。4 桁の数字。(1999 や 2019):<strong><?php echo date('Y', strtotime('-5 year')); ?></strong><br> ・y 年。2 桁の数字。(99 や 19):<strong><?php echo date('y', strtotime('-5 year')); ?></strong><br> |
結果は
・y 年。2 桁の数字。(99 や 19):14
となります。
date() + mktime() で 過去の年 取得
mktime()関数 は、指定した日時のUNIXタイムスタンプの数値を返します。時、分、秒、月、日、年 と日時の内容を指定します。mktime(時, 分, 秒, 月, 日, 年);
実行日時が 2019-07-02 12:41:54 火曜日 の場合
5年後の年を取得する。
1 2 | ・Y 年。4 桁の数字。(1999 や 2019):<strong><?php echo date('Y', mktime(date('H'),date('i'),date('s'),date('m'),date('d'),date('Y')-5)); ?></strong><br> ・y 年。2 桁の数字。(99 や 19):<strong><?php echo date('y', mktime(date('H'),date('i'),date('s'),date('m'),date('d'),date('Y')-5)); ?></strong><br> |
結果は
・y 年。2 桁の数字。(99 や 19):14
となります。
DateTimeクラス で 過去の年 取得
実行日時が 2019-07-02 12:41:54 火曜日 の場合
5年後の年を取得する。
1 2 3 | <?php $objDateTime = new DateTime('-5 year'); ?> ・Y 年。4 桁の数字。(1999 や 2019):<strong><?php echo $objDateTime->format('Y'); ?></strong><br> ・y 年。2 桁の数字。(99 や 19):<strong><?php echo $objDateTime->format('y'); ?></strong><br> |
結果は
・y 年。2 桁の数字。(99 や 19):14
となります。
過去の 月 取得
date() + strtotime() で過去の 月 取得
実行日時が 2019-07-02 12:41:54 火曜日 の場合
3カ月前の月を取得する。
1 2 3 4 5 | ・F 月。フルスペルの文字。(January~December):<strong><?php echo date('F', strtotime('-3 month')); ?></strong><br> ・m 月。数字。先頭にゼロをつける。(01~12):<strong><?php echo date('m', strtotime('-3 month')); ?></strong><br> ・M 月。3 文字形式(Jan~Dec):<strong><?php echo date('M', strtotime('-3 month')); ?></strong><br> ・n 月。数字。先頭にゼロをつけない。(1~12):<strong><?php echo date('n', strtotime('-3 month')); ?></strong><br> ・t 指定した月の日数。(28~31):<strong><?php echo date('t', strtotime('-3 month')); ?></strong><br> |
結果は
・m 月。数字。先頭にゼロをつける。(01~12):04
・M 月。3 文字形式(Jan~Dec):Apr
・n 月。数字。先頭にゼロをつけない。(1~12):4
・t 指定した月の日数。(28~31):30
となります。
date() + mktime() で過去の 月 取得
実行日時が 2019-07-02 12:41:54 火曜日 の場合
3カ月前の月を取得する。
1 2 3 4 5 | ・F 月。フルスペルの文字。(January~December):<strong><?php echo date('F', mktime(date('H'),date('i'),date('s'),date('m')-3,date('d'),date('Y'))); ?></strong><br> ・m 月。数字。先頭にゼロをつける。(01~12):<strong><?php echo date('m', mktime(date('H'),date('i'),date('s'),date('m')-3,date('d'),date('Y'))); ?></strong><br> ・M 月。3 文字形式(Jan~Dec):<strong><?php echo date('M', mktime(date('H'),date('i'),date('s'),date('m')-3,date('d'),date('Y'))); ?></strong><br> ・n 月。数字。先頭にゼロをつけない。(1~12):<strong><?php echo date('n', mktime(date('H'),date('i'),date('s'),date('m')-3,date('d'),date('Y'))); ?></strong><br> ・t 指定した月の日数。(28~31):<strong><?php echo date('t', mktime(date('H'),date('i'),date('s'),date('m')-3,date('d'),date('Y'))); ?></strong><br> |
結果は
・m 月。数字。先頭にゼロをつける。(01~12):04
・M 月。3 文字形式(Jan~Dec):Apr
・n 月。数字。先頭にゼロをつけない。(1~12):4
・t 指定した月の日数。(28~31):30
となります。
DateTimeクラス で 月 取得
実行日時が 2019-07-02 12:41:54 火曜日 の場合
3カ月前の月を取得する。
1 2 3 4 5 6 | <?php $objDateTime = new DateTime('-3 month'); ?> ・F 月。フルスペルの文字。(January~December):<strong><?php echo $objDateTime->format('F'); ?></strong><br> ・m 月。数字。先頭にゼロをつける。(01~12):<strong><?php echo $objDateTime->format('m'); ?></strong><br> ・M 月。3 文字形式(Jan~Dec):<strong><?php echo $objDateTime->format('M'); ?></strong><br> ・n 月。数字。先頭にゼロをつけない。(1~12):<strong><?php echo $objDateTime->format('n'); ?></strong><br> ・t 指定した月の日数。(28~31):<strong><?php echo $objDateTime->format('t'); ?></strong><br> |
結果は
・m 月。数字。先頭にゼロをつける。(01~12):04
・M 月。3 文字形式(Jan~Dec):Apr
・n 月。数字。先頭にゼロをつけない。(1~12):4
・t 指定した月の日数。(28~31):30
となります。
過去の 日 取得
date() + strtotime() で 過去の日 取得
実行日時が 2019-07-02 12:41:54 火曜日 の場合
10日前の日を取得する。
1 2 | ・d 日。二桁の数字(先頭にゼロがつく場合も)(01~31):<strong><?php echo date('d', strtotime('-10 day')); ?></strong><br> ・j 日。先頭にゼロをつけない。(1~31):<strong><?php echo date('j', strtotime('-10 day')); ?></strong><br> |
結果は
・j 日。先頭にゼロをつけない。(1~31):22
となります。
※6/22
date() + mktime() で 過去の日 取得
実行日時が 2019-07-02 12:41:54 火曜日 の場合
10日前の日を取得する。
1 2 | ・d 日。二桁の数字(先頭にゼロがつく場合も)(01~31):<strong><?php echo date('d', mktime(date('H'),date('i'),date('s'),date('m'),date('d')-10,date('Y'))); ?></strong><br> ・j 日。先頭にゼロをつけない。(1~31):<strong><?php echo date('j', mktime(date('H'),date('i'),date('s'),date('m'),date('d')-10,date('Y'))); ?></strong><br> |
結果は
・j 日。先頭にゼロをつけない。(1~31):22
となります。
※6/22
DateTimeクラス で 日 取得
実行日時が 2019-07-02 12:41:54 火曜日 の場合
10日前の日を取得する。
1 2 3 | <?php $objDateTime = new DateTime('-10 day'); ?> ・d 日。二桁の数字(先頭にゼロがつく場合も)(01~31):<strong><?php echo $objDateTime->format('d'); ?></strong><br> ・j 日。先頭にゼロをつけない。(1~31):<strong><?php echo $objDateTime->format('j'); ?></strong><br> |
結果は
・j 日。先頭にゼロをつけない。(1~31):22
となります。
※6/22
過去の 曜日 取得
date() + strtotime() で 過去の曜日 取得
実行日時が 2019-07-02 12:41:54 火曜日 の場合
先月の曜日を取得する。
1 2 3 | ・D 曜日。3文字のテキスト形式。(Mon~Sun):<strong><?php echo date('D', strtotime('last month')); ?></strong><br> ・l 曜日。フルスペル形式。(Sunday~Saturday):<strong><?php echo date('l', strtotime('last month')); ?></strong><br> ・w 曜日。数値。(0(日曜) から 6(土曜)):<strong><?php echo date('w', strtotime('last month')); ?></strong><br> |
結果は
・l 曜日。フルスペル形式。(Sunday~Saturday):Sunday
・w 曜日。数値。(0(日曜) から 6(土曜)):0
となります。
date() + mktime() で 過去の曜日 取得
実行日時が 2019-07-02 12:41:54 火曜日 の場合
先月の曜日を取得する。
1 2 3 | ・D 曜日。3文字のテキスト形式。(Mon~Sun):<strong><?php echo date('D', mktime(date('H'),date('i'),date('s'),date('m')-1,date('d'),date('Y'))); ?></strong><br> ・l 曜日。フルスペル形式。(Sunday~Saturday):<strong><?php echo date('l', mktime(date('H'),date('i'),date('s'),date('m')-1,date('d'),date('Y'))); ?></strong><br> ・w 曜日。数値。(0(日曜) から 6(土曜)):<strong><?php echo date('w', mktime(date('H'),date('i'),date('s'),date('m')-1,date('d'),date('Y'))); ?></strong><br> |
結果は
・l 曜日。フルスペル形式。(Sunday~Saturday):Sunday
・w 曜日。数値。(0(日曜) から 6(土曜)):0
となります。
DateTimeクラス で 過去の曜日 取得
実行日時が 2019-07-02 12:41:54 火曜日 の場合
先月の曜日を取得する。
1 2 3 4 | <?php $objDateTime = new DateTime('last month'); ?> ・D 曜日。3文字のテキスト形式。(Mon~Sun):<strong><?php echo $objDateTime->format('D'); ?></strong><br> ・l 曜日。フルスペル形式。(Sunday~Saturday):<strong><?php echo $objDateTime->format('l'); ?></strong><br> ・w 曜日。数値。(0(日曜) から 6(土曜)):<strong><?php echo $objDateTime->format('w'); ?></strong><br> |
結果は
・l 曜日。フルスペル形式。(Sunday~Saturday):Sunday
・w 曜日。数値。(0(日曜) から 6(土曜)):0
となります。
過去の 時 取得
date() + strtotime() で 過去の時 取得
実行日時が 2019-07-02 12:41:54 火曜日 の場合
8時間前の時を取得する。
1 2 | ・H 24時間単位。先頭ゼロあり。(00~23):<strong><?php echo date('H', strtotime('-8 hour')); ?></strong><br> ・h 12時間単位。先頭ゼロあり。(01~12):<strong><?php echo date('h', strtotime('-8 hour')); ?></strong><br> |
結果は
・h 12時間単位。先頭ゼロあり。(01~12):04
となります。
date() + mktime() で 過去の時 取得
実行日時が 2019-07-02 12:41:54 火曜日 の場合
8時間前の時を取得する。
1 2 | ・H 24時間単位。先頭ゼロあり。(00~23):<strong><?php echo date('H', mktime(date('H')-8,date('i'),date('s'),date('m'),date('d'),date('Y'))); ?></strong><br> ・h 12時間単位。先頭ゼロあり。(01~12):<strong><?php echo date('h', mktime(date('H')-8,date('i'),date('s'),date('m'),date('d'),date('Y'))); ?></strong><br> |
結果は
・h 12時間単位。先頭ゼロあり。(01~12):04
となります。
DateTimeクラス で 過去の時 取得
実行日時が 2019-07-02 12:41:54 火曜日 の場合
8時間前の時を取得する。
1 2 3 | <?php $objDateTime = new DateTime('-8 hour'); ?> ・H 24時間単位。先頭ゼロあり。(00~23):<strong><?php echo $objDateTime->format('H'); ?></strong><br> ・h 12時間単位。先頭ゼロあり。(01~12):<strong><?php echo $objDateTime->format('h'); ?></strong><br> |
結果は
・h 12時間単位。先頭ゼロあり。(01~12):04
となります。
過去の 過去の分 取得
date() + strtotime() で 分 取得
実行日時が 2019-07-02 12:41:54 火曜日 の場合
30分前の時を取得する。
1 | ・i 先頭ゼロあり(00~59)。:<strong><?php echo date('i', strtotime('-30 min')); ?></strong><br> |
結果は
となります。
※12:11:54
date() + mktime() で 分 取得
実行日時が 2019-07-02 12:41:54 火曜日 の場合
30分前の時を取得する。
1 | ・i 先頭ゼロあり(00~59)。:<strong><?php echo date('i', mktime(date('H'),date('i')-30,date('s'),date('m'),date('d'),date('Y'))); ?></strong><br> |
結果は
となります。
※12:11:54
DateTimeクラス で 過去の分 取得
実行日時が 2019-07-02 12:41:54 火曜日 の場合
30分前の時を取得する。
1 2 | <?php $objDateTime = new DateTime('-30 min'); ?> ・i 先頭ゼロあり(00~59)。:<strong><?php echo $objDateTime->format('i'); ?></strong><br> |
結果は
となります。
※12:11:54
過去の 秒 取得
date() + strtotime() で 過去の秒 取得
実行日時が 2019-07-02 12:41:54 火曜日 の場合
10秒前の時を取得する。
1 | ・s 先頭ゼロあり(00~59)。:<strong><?php echo date('s', strtotime('-10 seconds')); ?></strong><br> |
結果は
となります。
date() + mktime() で 過去の秒 取得
実行日時が 2019-07-02 12:41:54 火曜日 の場合
10秒前の時を取得する。
1 | ・s 先頭ゼロあり(00~59)。:<strong><?php echo date('s', mktime(date('H'),date('i'),date('s')-10,date('m'),date('d'),date('Y'))); ?></strong><br> |
結果は
となります。
DateTimeクラス で 過去の秒 取得
実行日時が 2019-07-02 12:41:54 火曜日 の場合
10秒前の時を取得する。
1 2 | <?php $objDateTime = new DateTime('-10 seconds'); ?> ・s 先頭ゼロあり(00~59)。: <strong><?php echo $objDateTime->format('s'); ?></strong><br> |
結果は
となります。
タグ(=記事関連ワード)
日付
最終更新日: