ホーム > PHPサンプル > 日付系 > PHP 過去の日付や時間を取得したい
PHPサンプル

UPDATE:

PHP 過去の日付や時間を取得したい

PHP 過去の日付や時間を取得したい | wepicks!
PHP5 PHP7

過去の日付や時間を取得する

PHP で過去の日付や時間を得るには、date()関数DateTimeクラス を利用します。date() は、指定した「日付や時刻のフォーマット文字列」から日時の文字列を返します。オプションでUNIXタイムスタンプを指定すると、指定したタイムスタンプに合わせた日時を返します。過去の日付を得るには、このタイムスタンプの日時を過去のタイムスタンプにすれば取得できます。タイムスタンプを省略すると現在日時を返します。DateTimeクラスでは過去、現在、未来、と、様々な日付や時刻を表すことが出来ます。

タイムゾーンの指定
php.ini に記述する場合
date.timezone = Asia/Tokyo
スクリプトに記述する場合
<?php date_default_timezone_set ('Asia/Tokyo'); ?>
※日本時間に合わせます。タイムゾーンに誤りがあると日付系の関数やクラスでエラーが起こる場合があります。
使用する関数やクラス

書式 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 を返す

※UNIXタイムスタンプは、1970年1月1日00時00分00秒UTC(協定世界時と一致する標準時)らの経過秒数です。例えば2019年5月15日1時34分25秒のUNIXタイムスタンプは 1557851665 となります。


date() や DateTimeクラス format()メソッド の日付/時刻フォーマット文字列 簡易表

取得内容フォーマット文字説明
Y1999 や 2020年 4 桁の数字
y99 や 19年 2 桁の数字
L1 か 0閏年かどうか。1なら閏年。0なら閏年ではない
FJanuary~December月 フルスペルの文字
m01~12月 数字。先頭にゼロをつける
MJan~Dec月 3 文字形式
n1~12月 数字。先頭にゼロをつけない
t28~31月 指定した月の日数
d01~31日 2桁の数字(先頭にゼロがつく場合も)
j1~31日 数字。先頭にゼロをつけない
曜日DMon~Sun3文字のテキスト形式
lSunday~Saturdayフルスペル形式
N1~7数字 1(月曜) から 7(日曜)
w0~6数字 0(日曜) から 6(土曜)
W1数字 月曜日に始まる年単位の週番号
g1~1212時間単位。先頭ゼロなし
G0~2324時間単位。先頭ゼロなし
h01~1212時間単位。先頭ゼロあり
H00~2324時間単位。先頭ゼロあり
aam pm午前/午後。小文字表示
AAM PM午前/午後。大文字表示
i00~59先頭ゼロあり
s00~59先頭ゼロあり
全日付c2020-05-15T01:04:54+09:00ISO8601 フォーマット日付
rWed, 15 May 2020 01:04:54 +0900RFC2822 フォーマット日付

過去の日時を取得

date() で過去の日付や時間を取得する

date()関数 は、指定した「日付や時刻のフォーマット文字列」から「日時の文字列」を返します「 日時の文字列 = date('日付/時刻のフォーマット文字列'); 」。

例えば

とすると、現在の「」(4桁)が取得できます。「Y」は4桁の年数を表す「日付や時刻のフォーマット文字列」です。

オプションでUNIXタイムスタンプを指定すると、指定したタイムスタンプに合わせた日時の文字列を返します「 日時の文字列 = date('日付/時刻のフォーマット文字列', UNIXタイムスタンプ); 」。タイムスタンプは、strtotime()関数 や mktime()関数 で取得できます。タイムスタンプを省略すると現在日時となります。

オプションのタイムスタンプで5年前のタイムスタンプを指定します。結果は現在から5年前の過去の「」(4桁)が取得できます。

date() の「年 月 日 時 分 秒」を表現するフォーマット文字列を使用すると、過去の日時を取得することが出来ます。
5年前を指定してみます。
実行日時が 2019-07-02 12:41:54 の場合

結果は

2014-07-02
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年前を指定してみます。

結果は

2014-07-02
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年前の年を取得する。

結果は

・Y 年。4 桁の数字。(1999 や 2019):2014
・y 年。2 桁の数字。(99 や 19):14

となります。

date() + mktime() で 過去の年 取得

mktime()関数 は、指定した日時のUNIXタイムスタンプの数値を返します。時、分、秒、月、日、年 と日時の内容を指定します。mktime(時, 分, 秒, 月, 日, 年);

実行日時が 2019-07-02 12:41:54 火曜日 の場合
5年後の年を取得する。

結果は

・Y 年。4 桁の数字。(1999 や 2019):2014
・y 年。2 桁の数字。(99 や 19):14

となります。

DateTimeクラス で 過去の年 取得

実行日時が 2019-07-02 12:41:54 火曜日 の場合
5年後の年を取得する。

結果は

・Y 年。4 桁の数字。(1999 や 2019):2014
・y 年。2 桁の数字。(99 や 19):14

となります。

過去の 月 取得

date() + strtotime() で過去の 月 取得

実行日時が 2019-07-02 12:41:54 火曜日 の場合
3カ月前の月を取得する。

結果は

・F 月。フルスペルの文字。(January~December):April
・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カ月前の月を取得する。

結果は

・F 月。フルスペルの文字。(January~December):April
・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カ月前の月を取得する。

結果は

・F 月。フルスペルの文字。(January~December):April
・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日前の日を取得する。

結果は

・d 日。二桁の数字(先頭にゼロがつく場合も)(01~31):22
・j 日。先頭にゼロをつけない。(1~31):22

となります。
※6/22

date() + mktime() で 過去の日 取得

実行日時が 2019-07-02 12:41:54 火曜日 の場合
10日前の日を取得する。

結果は

・d 日。二桁の数字(先頭にゼロがつく場合も)(01~31):22
・j 日。先頭にゼロをつけない。(1~31):22

となります。
※6/22

DateTimeクラス で 日 取得

実行日時が 2019-07-02 12:41:54 火曜日 の場合
10日前の日を取得する。

結果は

・d 日。二桁の数字(先頭にゼロがつく場合も)(01~31):22
・j 日。先頭にゼロをつけない。(1~31):22

となります。
※6/22

過去の 曜日 取得

date() + strtotime() で 過去の曜日 取得

実行日時が 2019-07-02 12:41:54 火曜日 の場合
先月の曜日を取得する。

結果は

・D 曜日。3文字のテキスト形式。(Mon~Sun):Sun
・l 曜日。フルスペル形式。(Sunday~Saturday):Sunday
・w 曜日。数値。(0(日曜) から 6(土曜)):0

となります。

date() + mktime() で 過去の曜日 取得

実行日時が 2019-07-02 12:41:54 火曜日 の場合
先月の曜日を取得する。

結果は

・D 曜日。3文字のテキスト形式。(Mon~Sun):Sun
・l 曜日。フルスペル形式。(Sunday~Saturday):Sunday
・w 曜日。数値。(0(日曜) から 6(土曜)):0

となります。

DateTimeクラス で 過去の曜日 取得

実行日時が 2019-07-02 12:41:54 火曜日 の場合
先月の曜日を取得する。

結果は

・D 曜日。3文字のテキスト形式。(Mon~Sun):Sun
・l 曜日。フルスペル形式。(Sunday~Saturday):Sunday
・w 曜日。数値。(0(日曜) から 6(土曜)):0

となります。

過去の 時 取得

date() + strtotime() で 過去の時 取得

実行日時が 2019-07-02 12:41:54 火曜日 の場合
8時間前の時を取得する。

結果は

・H 24時間単位。先頭ゼロあり。(00~23):04
・h 12時間単位。先頭ゼロあり。(01~12):04

となります。

date() + mktime() で 過去の時 取得

実行日時が 2019-07-02 12:41:54 火曜日 の場合
8時間前の時を取得する。

結果は

・H 24時間単位。先頭ゼロあり。(00~23):04
・h 12時間単位。先頭ゼロあり。(01~12):04

となります。

DateTimeクラス で 過去の時 取得

実行日時が 2019-07-02 12:41:54 火曜日 の場合
8時間前の時を取得する。

結果は

・H 24時間単位。先頭ゼロあり。(00~23):04
・h 12時間単位。先頭ゼロあり。(01~12):04

となります。

過去の 過去の分 取得

date() + strtotime() で 分 取得

実行日時が 2019-07-02 12:41:54 火曜日 の場合
30分前の時を取得する。

結果は

・i 先頭ゼロあり(00~59)。:11

となります。
※12:11:54

date() + mktime() で 分 取得

実行日時が 2019-07-02 12:41:54 火曜日 の場合
30分前の時を取得する。

結果は

・i 先頭ゼロあり(00~59)。:11

となります。
※12:11:54

DateTimeクラス で 過去の分 取得

実行日時が 2019-07-02 12:41:54 火曜日 の場合
30分前の時を取得する。

結果は

・i 先頭ゼロあり(00~59)。:11

となります。
※12:11:54

過去の 秒 取得

date() + strtotime() で 過去の秒 取得

実行日時が 2019-07-02 12:41:54 火曜日 の場合
10秒前の時を取得する。

結果は

・s 先頭ゼロあり(00~59)。:44

となります。

date() + mktime() で 過去の秒 取得

実行日時が 2019-07-02 12:41:54 火曜日 の場合
10秒前の時を取得する。

結果は

・s 先頭ゼロあり(00~59)。:44

となります。

DateTimeクラス で 過去の秒 取得

実行日時が 2019-07-02 12:41:54 火曜日 の場合
10秒前の時を取得する。

結果は

・s 先頭ゼロあり(00~59)。:44

となります。


タグ(=記事関連ワード)

タグ: , ,

日付

投稿日:2019年7月2日
最終更新日:

このカテゴリの他のページ

この記事へのコメント

トラックバックurl

https://wepicks.net/phpsample-date-past_date/trackback/

page top