ホーム > PHPサンプル > 日付系 > PHP 日付 あらゆる日時を取得
PHPサンプル

UPDATE:2019年11月08日

PHP 日付 あらゆる日時を取得

PHP 日付 あらゆる日時を取得 | wepicks!

PHPで日付/時間を取得するには

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

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

書式 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()メソッド が理解できるフォーマット文字列

サンプル

※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 フォーマット日付

strtotime() /DateTimeクラス 英文形式フォーマット文字列 早見表

取得内容英文形式のフォーマット文字列内容
今現在now今現在のUNIXタイムスタンプ
本日today本日のUNIXタイムスタンプ
昨日yesterday昨日のUNIXタイムスタンプ
明日tomorrow明日のUNIXタイムスタンプ
今週this week今週の月曜日のUNIXタイムスタンプ
先週last week先週の月曜日のUNIXタイムスタンプ
来週next week来週の月曜日のUNIXタイムスタンプ
今月this month今月の同日のUNIXタイムスタンプ
先月last month先月の同日のUNIXタイムスタンプ
来月next month来月の同日のUNIXタイムスタンプ
今年this year今年の同日のUNIXタイムスタンプ
去年last year去年の同日のUNIXタイムスタンプ
来年next year来年の同日のUNIXタイムスタンプ
指定日付1 January 2019指定日付のUNIXタイムスタンプ
指定日時2019-01-02 03:04:05指定日時のUNIXタイムスタンプ
本日から 年 月 日 週 を加算 (+ 省略可/- も可)+1 day +1 week +1 month +1 year年 月 日 週 の + - 指定のUNIXタイムスタンプ
今から+1時間1分1秒 (+ 省略可/- も可)+1 hours +1 min +1 seconds時、分、秒 の + - 指定のUNIXタイムスタンプ
次の木曜日Thursday
next Thursday
次の木曜日のUNIXタイムスタンプ
前の木曜日last Thursday前の木曜日のUNIXタイムスタンプ
月の最初の日first day of this month指定月の最初の日のUNIXタイムスタンプ
月の最後の日last day of this month指定月の最後の日のUNIXタイムスタンプ
指定日から + -2020-01-01 00:00:00 +1 seconds +1 min +1 hours +1 day +1 week +1 month +1 year指定日から + - したUNIXタイムスタンプ

date()関数 や DateTimeクラス を実行して日付/時間を取得

date()関数を実行してみましょう

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

例えば

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

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

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

date() の「年 月 日 時 分 秒」を表現するフォーマット文字列を使用すると、現在の日時を取得することが出来ます。

2019-05-21 13:33:59 にコードを実行した場合です。実行時の日時を取得します。

結果は

2019-05-21
2019年5月21日
2019年
5月
21日
May 21, 2019
May 21, 2019
Tuesday May 21, 2019
13:33:59
1:33:59 PM

となります。

DateTimeクラスを実行してみましょう

DateTimeクラスは様々な日付や時刻を表現できるクラスです。DateTimeクラスを呼び出しオブジェクト(インスタンス)を作成します「 オブジェクト = new DateTime(); 」。DateTimeクラスを呼び出す際に日付や時刻を指定することも出来ます「 オブジェクト = new DateTime('日付/時刻のフォーマット文字列'); 」。省略した場合は現在の日時になります。オブジェクトのformat()メソッドは、指定した日付や時刻のフォーマット文字列から日時の文字列を返します「 日時の文字列 = オブジェクト->format('日付/時刻のフォーマット文字列'); 」。成功すると日時の文字列を返し、失敗すると FALSE を返します。format()メソッドで指定する日時のフォーマット文字列はdate()関数で指定するフォーマットと同じです。

2019-05-21 13:33:59 にコードを実行した場合です。実行時の日時を取得します。

結果は

2019-05-21
2019年5月21日
2019年
5月
21日
May 21, 2019
May 21, 2019
Tuesday May 21, 2019
13:33:59
1:33:59 PM

となります。

本日(現在)の日付や時間を取得

date() で取得

本日(現在)の日付を取得

2019/01/02 にコードを実行した場合です。日付を取得します。

結果は

2019-01-02
2019年01月02日

となります。

本日(現在)の日付/時間を取得

2019/01/02 03:04:05 にコードを実行した場合です。日付を取得します。

結果は

2019-01-02 03:04:05
2019年01月02日 03時04分05秒

となります。

DateTimeクラス で取得

本日(現在)の日付を取得

2019/01/02 にコードを実行した場合です。日付を取得します。

結果は

2019-01-02
2019年01月02日

となります。

本日(現在)の日付/時間を取得

2019/01/02 03:04:05 にコードを実行した場合です。日付を取得します。

結果は

2019-01-02 03:04:05
2019年01月02日 03時04分05秒

となります。

明日

現時点から明日の日付を取得

2019/05/15 にコードを実行した場合です。

結果は

2019-05-16
2019-05-16

となります。

任意の日(指定日)から明日の日付を取得

指定日を 2018-05-01 にした場合です。

結果は

2018-05-02
2018-05-02

となります。

来週

現時点から来週の日付を取得

2019/05/15 にコードを実行した場合です。

結果は

2019-05-22
2019-05-22

となります。

任意の日(指定日)から来週の日付を取得

指定日を 2018/05/01 にした場合です。

結果は

2018-05-08
2018-05-08

となります。

来月

現時点から来月の日付を取得

2019/05/15 にコードを実行した場合です。

結果は

2019-06-15
2019-06-15

となります。

任意の日(指定日)から来月の日付を取得

指定日を 2018/05/01 にした場合です。

結果は

2018-06-01
2018-06-01

となります。

来年

現時点から来年の日付を取得

2019/05/15 にコードを実行した場合です。

結果は

2020-05-15
2020-05-15

となります。

任意の日(指定日)から来年の日付を取得

指定日を 2018/05/01 にした場合です。

結果は

2019-05-01
2019-05-01

となります。

昨日

現時点から昨日の日付を取得

2019/05/16 にコードを実行した場合です。

結果は

2019-05-15
2019-05-15

となります。

任意の日(指定日)から昨日の日付を取得

指定日を 2018/05/01 にした場合です。

結果は

2018-04-30
2018-04-30

となります。

先週

現時点から先週の日付を取得

2019/05/16 にコードを実行した場合です。

結果は

2019-05-09
2019-05-09

となります。

任意の日(指定日)から先週の日付を取得

指定日を 2018/05/01 にした場合です。

結果は

2018-04-24
2018-04-24

となります。

先月

現時点から先月の日付を取得

2019/05/16 にコードを実行した場合です。

結果は

2019-04-16
2019-04-16

となります。

任意の日(指定日)から先月の日付を取得

指定日を 2018/05/01 にした場合の結果です。

結果は

2018-04-01
2018-04-01

となります。

去年

現時点から去年の日付を取得

2019/05/16 にコードを実行した場合です。

結果は

2018-05-16
2018-05-16

となります。

任意の日(指定日)から去年の日付を取得

指定日を 2018/05/01 にした場合です。

結果は

2017-05-01
2017-05-01

となります。

任意の日付(指定日)

strtotime() で指定日の日付をを取得する

指定日の日付を取得するには、その日付のタイムスタンプを取得して日付に変換します。
strtotime()を使用して指定日時のUNIXタイムスタンプを取得し、タイムスタンプから日付を取得します。

2018年10月20日を取得する

結果は

2018年10月20日のタイムスタンプ:1539961200
日時に変換:2018/10/20 00:00:00

となります。

2020年1月2日3時4分5秒を取得する

結果は

2020年1月2日 3時4分5秒のタイムスタンプ:1577901845
日時に変換:2020/01/02 03:04:05

となります。

mktime() で指定日の日付をを取得する

mktime()を使用して指定日時のUNIXタイムスタンプを取得し、タイムスタンプから日付を取得します。

2020年1月2日3時4分5秒のタイムスタンプを取得する

結果は

2020年1月2日 3時4分5秒のタイムスタンプ:1577901845
日時に変換:2020/01/02 03:04:05

となります。

指定曜日の日付

現時点から前の曜日/次の曜日の日付を取得

2019/05/16 にコードを実行した場合です。

結果は

2018-05-13
2018-05-20

となります。

指定日から前の曜日/次の曜日の日付を取得

2018/05/01 から前の月曜日と次の月曜日の日付です。

結果は

2018-04-30
2018-05-07

となります。

時間を取得

現在時刻

2019/01/02 03:04:05 にコードを実行した場合です。日付と時間を取得します。

結果は

2019-01-02 03:04:05
2019年01月02日 03時04分05秒

となります。

時間の加算

2019-05-01 00:00:00 から時間をプラスする

結果は

2019-05-01 01:01:01
2019-05-05 04:00:00
2019-05-01 01:40:00
2019-05-01 00:01:40

となります。

時間の減算

2019-05-01 00:00:00 から時間をマイナスする

結果は

2019-04-30 22:58:59
2019-04-26 20:00:00
2019-04-30 22:20:00
2019-04-30 23:58:20

となります。

曜日を取得する

本日(今日)の曜日を取得

2019/05/21 火曜日 に実行した場合。

結果は

・3文字のテキスト形式。Tue
・フルスペル形式。Tuesday
・数値。1(月)から 7(日):2
・数値。0(日)から 6(土):2
・月曜日に始まる年単位の週番号:21

となります。

指定日の曜日を取得

2018/05/01 を指定日にした場合。

結果は

・3文字のテキスト形式。Tue
・フルスペル形式。Tuesday
・数値。1(月)から 7(日):2
・数値。0(日)から 6((土):2
・月曜日に始まる年単位の週番号:18

となります。

タイムスタンプと日付の取得

現在のUNIXタイムスタンプを取得

2019-01-02 03:04:05 にコードを実行した場合。

結果は

1546365845
1546365845
1546365845

となります。

また、このUNIXタイムスタンプ 1546365845 を日付に変換すると

結果は

2019-01-02 03:04:05

となります。

strtotime() で任意の日付(指定日)のUNIXタイムスタンプと日付を取得

strtotime()を使用して指定日時のUNIXタイムスタンプを取得します。また、タイムスタンプから日付を取得します。

2018年10月20日のタイムスタンプを取得する

結果は

2018年10月20日のタイムスタンプ:1539961200
日時に変換:2018/10/20 00:00:00

となります。

2020年1月2日3時4分5秒のタイムスタンプを取得する

結果は

2020年1月2日 3時4分5秒のタイムスタンプ:1577901845
日時に変換:2020/01/02 03:04:05

となります。

現在から1日後のタイムスタンプを取得する

2019-01-01 00:00:00にコードを実行した場合。

結果は

1日後のタイムスタンプ:1546354800
日時に変換:2019/01/02 00:00:00

となります。
-1 とすれば、1日前 となる。

現在から1週間後のタイムスタンプ

2019-01-01 00:00:00にコードを実行した場合。

結果は

1週間後のタイムスタンプ:1546873200
日時に変換:2019/01/08 00:00:00

となります。
-1 とすれば、1週間前 となる。

現在から1カ月後のタイムスタンプ

2019-01-01 00:00:00にコードを実行した場合。

結果は

1カ月後のタイムスタンプ:1548946800
日時に変換:2019/02/01 00:00:00

となります。
-1 とすれば、1カ月前 となる。

現在から+1秒、+2分、+3時間、+4日、+5カ月、+6年のタイムスタンプ

2019-01-01 00:00:00にコードを実行した場合。

結果は

+1秒、+2分、+3時間、+4日、+5カ月、+6年のタイムスタンプ:1749060121
日時に変換:2025/06/05 03:02:01

となります。

次の木曜日のタイムスタンプ

2019-01-01 00:00:00にコードを実行した場合。

結果は

次の木曜日のタイムスタンプ:1546441200
日時に変換:2019/01/03 00:00:00

となります。

前の月曜日のタイムスタンプ

2019-01-01 00:00:00にコードを実行した場合。

結果は

前の月曜日のタイムスタンプ:1546182000
日時に変換:2018/12/31 00:00:00

となります。

mktime() で任意の日付(指定日)のUNIXタイムスタンプと日付を取得

mktime()を使用して指定日時のUNIXタイムスタンプを取得します。また、タイムスタンプから日付を取得します。

2020年1月2日3時4分5秒のタイムスタンプを取得する

結果は

2020年1月2日 3時4分5秒のタイムスタンプ:1577901845
日時に変換:2020/01/02 03:04:05

となります。

現在から1日後のタイムスタンプ

2019-01-01 00:00:00にコードを実行した場合。

結果は

1日後のタイムスタンプ:1546354800
日時に変換:2019/01/02 00:00:00

となります。
-1 とすれば、1日前 となる。

現在から1週間後のタイムスタンプ

2019-01-01 00:00:00にコードを実行した場合。

結果は

1週間後のタイムスタンプ:1546873200
日時に変換:2019/01/08 00:00:00

となります。
-7 とすれば、1週間前 となる。

現在から1カ月後のタイムスタンプ

2019-01-01 00:00:00にコードを実行した場合。

結果は

1カ月後のタイムスタンプ:1548946800
日時に変換:2019/02/01 00:00:00

となります。
-1 とすれば、1カ月前 となる。

現在から+1秒、+2分、+3時間、+4日、+5カ月、+6年のタイムスタンプ

2019-01-01 00:00:00にコードを実行した場合。

結果は

+1秒、+2分、+3時間、+4日、+5カ月、+6年のタイムスタンプ:1749060121
日時に変換:2025/06/05 03:02:01

となります。


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

日付

投稿日:2017年5月4日
最終更新日:2019年11月08日

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

この記事へのコメント

トラックバックurl

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

page top