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

UPDATE:2019年05月22日

PHP 日付 あらゆる日時を取得 date()

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

PHPで日付を取得するには

php で 日付 を取得するには、date()strtotime()mktime() を組み合わせて利用すると便利です。date() は、日時の文字列を返し、strtotime() や mktime() はUNIXタイムスタンプの日時を数字で返します。これらを組み合わせることで、任意の指定日時を簡単に取得することが出来ます

書式 date()
日付文字列 = date(フォーマット [,UNIXタイムスタンプ]);
//[ ]省略可(タイムスタンプがない場合現在日付となる)
//返り値は文字列(string)
date()フォーマット
書式 strtotime()
指定日時のUNIXタイムスタンプ = strtotime(英文形式の日時);
//返り値は数値(int)、失敗時は FALSE を返す
strtotime() 英文形式フォーマット
書式 mktime()
指定日時のUNIXタイムスタンプ = mktime(時, 分, 秒, 月, 日, 年);
//返り値は数値(int)、失敗時は FALSE を返す
サンプル
※UNIXタイムスタンプは、1970年1月1日00時00分00秒UTC(協定世界時と一致する標準時)らの経過秒数です。例えば2019年5月15日1時34分25秒のUNIXタイムスタンプは 1557851665 となります。


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

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

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

date() の詳しいフォーマットはこちらを参照下さい。

結果は

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

となります。

本日(今日)

本日の日付を取得

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タイムスタンプと日付を取得 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

となります。

1日後のタイムスタンプを取得する

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

結果は

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

となります。

1週間後のタイムスタンプ

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

結果は

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

となります。

1カ月後のタイムスタンプ

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

結果は

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

となります。

+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

となります。

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

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週間後のタイムスタンプ

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

結果は

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

となります。

1カ月後のタイムスタンプ

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

結果は

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

となります。

+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

となります。

フォーマット

date() フォーマット

取得内容フォーマット文字説明戻り値の例
Y年 4 桁の数字1999 や 2019
y年 2 桁の数字99 や 19
L閏年かどうか。1なら閏年。0なら閏年ではない。1 か 0
echo date('Y');//2019
echo date('y');//19
echo date('L');//0
F月 フルスペルの文字January~December
m月 数字。先頭にゼロをつける01~12
M月 3 文字形式Jan~Dec
n月 数字。先頭にゼロをつけない1~12
t月 指定した月の日数28~31
echo date('F');//May
echo date('m');//05
echo date('M');//May
echo date('n');//5
echo date('t');//31
d日 2桁の数字(先頭にゼロがつく場合も)01~31
j日 数字。先頭にゼロをつけない1~31
echo date('d');//07
echo date('j');//7
曜日D3文字のテキスト形式Mon~Sun
lフルスペル形式Sunday~Saturday
N数字1(月曜) から 7(日曜)
w数字0(日曜) から 6(土曜)
W数字月曜日に始まる年単位の週番号
echo date('D');//Wed
echo date('l');//Wednesday
echo date('N');//3
echo date('w');//3
echo date('W');//21
g12時間単位。先頭ゼロなし0~12
G24時間単位。先頭ゼロなし0~23
h12時間単位。先頭ゼロあり00~12
H24時間単位。先頭ゼロあり00~23
a午前/午後。小文字表示am pm
A午前/午後。大文字表示AM PM
echo date('g');//12
echo date('G');//0
echo date('h');//12
echo date('H');//00
echo date('a');//pm
echo date('A');//PM
i先頭ゼロあり00~59
echo date('i');//59
s先頭ゼロあり00~59
echo date('s');//01
ミリ秒vミリ秒 (PHP 7.0.0 で追加) uと同じ注釈が当てはまります。654
echo date('v');//000
マイクロ秒uマイクロ秒 (PHP 5.2.2 で追加)。date() の場合、これは常に 000000 となることに注意。というのも、この関数が受け取るパラメータは integer 型だからです。一方 DateTime をマイクロ秒つきで作成した場合は、DateTime::format() はマイクロ秒にも対応しています。654321
echo date('u');//000000
全日付cISO8601 フォーマット日付2019-05-15T01:04:54+09:00
rRFC2822 フォーマット日付Wed, 15 May 2019 01:04:54 +0900
echo date('c');//2019-05-15T01:04:54+09:00
echo date('r');//Wed, 15 May 2019 01:04:54 +0900
タイムゾーンオフセット秒数ZUTC(世界協定時間=グリニッジ天文台が有る場所東経0度の場所を基準にして決められている時間)の西側のタイムゾーン用のオフセット秒数は常に負になります。UTCの東側のオフセット秒数は常に正になります。 日本は32400なので、+9時間です。-43200 ~ 50400
echo date('Z');//32400
UNIX時間からの秒数UUnix Epoch(エポック秒(UNIX時間))=1970年1月1日0時0分0秒からの秒数1557850516
echo date('U');//1557850516

strtotime() 英文形式フォーマット

英文形式フォーマットで指定した日時のUNIXタイムスタンプを取得します。
※UNIXタイムスタンプは、1970年1月1日00時00分00秒UTC(協定世界時と一致する標準時)らの経過秒数です。例えば2019年5月15日1時34分25秒のUNIXタイムスタンプは 1557851665 となります。
戻り値の例やサンプルの結果は 2019-01-01 00:00:00 に実行した場合
取得内容フォーマット文字内容戻り値の例
今現在now今現在のUNIXタイムスタンプ1546268400
<?php echo strtotime("now");//1546268400 ?>
<?php echo date('Y-m-d H:i:s', strtotime('now'));//2019-01-01 00:00:00 ?>
本日today本日のUNIXタイムスタンプ1546268400
<?php echo strtotime("today");//1546268400 ?>
<?php echo date('Y-m-d', strtotime('today'));//2019-01-01 ?>
昨日yesterday昨日のUNIXタイムスタンプ1546182000
<?php echo strtotime("yesterday");//1546182000 ?>
<?php echo date('Y-m-d', strtotime('yesterday'));//2018-12-31 ?>
明日tomorrow明日のUNIXタイムスタンプ1546354800
<?php echo strtotime("tomorrow");//1546354800 ?>
<?php echo date('Y-m-d', strtotime('tomorrow'));//2019-01-02 ?>
今週this week今週の月曜日のUNIXタイムスタンプ1546182000
<?php echo strtotime("this week");//1546182000 ?>
<?php echo date('Y-m-d', strtotime('this week'));//2018-12-31 ?>
先週last week先週の月曜日のUNIXタイムスタンプ1545577200
<?php echo strtotime("last week");//1545577200 ?>
<?php echo date('Y-m-d', strtotime('last week'));//2018-12-24 ?>
来週next week来週の月曜日のUNIXタイムスタンプ1546786800
<?php echo strtotime("next week");//1546786800 ?>
<?php echo date('Y-m-d', strtotime('next week'));//2019-01-07 ?>
今月this month今月の同日のUNIXタイムスタンプ1546268400
<?php echo strtotime("this month");//1546268400 ?>
<?php echo date('Y-m-d', strtotime('this month'));//2019-01-01 ?>
先月last month先月の同日のUNIXタイムスタンプ1543590000
<?php echo strtotime("last month");//1543590000 ?>
<?php echo date('Y-m-d', strtotime('last month'));//2018-12-01 ?>
来月next month来月の同日のUNIXタイムスタンプ1548946800
<?php echo strtotime("next month");//1548946800 ?>
<?php echo date('Y-m-d', strtotime('next month'));//2019-02-01 ?>
今年this year今年の同日のUNIXタイムスタンプ1546268400
<?php echo strtotime("this year");//1546268400 ?>
<?php echo date('Y-m-d', strtotime('this year'));//2019-01-01 ?>
去年last year去年の同日のUNIXタイムスタンプ1514732400
<?php echo strtotime("last year");//1514732400 ?>
<?php echo date('Y-m-d', strtotime('last year'));//2018-01-01 ?>
来年next year来年の同日のUNIXタイムスタンプ1577804400
<?php echo strtotime("next year");//1577804400 ?>
<?php echo date('Y-m-d', strtotime('next year'));//2020-01-01 ?>
指定日付1 January 2019指定日付のUNIXタイムスタンプ1546268400
<?php echo strtotime("1 January 2019");//1546268400 ?>
<?php echo date('Y-m-d', strtotime("1 January 2019"));//2019-01-01 ?>
指定日時2019-01-02 03:04:05指定日時のUNIXタイムスタンプ1546365845
<?php strtotime('2019-01-02 03:04:05');//1546365845 ?>
<?php date('Y-m-d H:i:s', strtotime('2019-01-02 03:04:05'));//2019-01-02 03:04:05 ?>
本日から 年 月 日 週 を加算 (+ 省略可/- も可)+1 day +1 week +1 month +1 year年 月 日 週 の + - 指定のUNIXタイムスタンプ1581174000
<?php echo strtotime("+1 day +1 week +1 month +1 year");//1581174000 ?>
<?php echo date('Y-m-d', strtotime('+1 day +1 week +1 month +1 year'));//2020-02-09 ?>
今から+1時間1分1秒 (+ 省略可/- も可)+1 hours +1 min +1 seconds時、分、秒 の + - 指定のUNIXタイムスタンプ1546272061
<?php echo strtotime("+1 hours +1 min +1 seconds");//1546272061 ?>
<?php echo date('Y-m-d H:i:s', strtotime('+1 hours +1 min +1 seconds'));//2019-01-01 01:01:01 ?>
次の木曜日Thursday
next Thursday
次の木曜日のUNIXタイムスタンプ1546441200
<?php echo strtotime("Thursday");//1546441200 ?>
<?php date('Y-m-d', strtotime("Thursday"));//2019-01-03 ?>
前の木曜日last Thursday前の木曜日のUNIXタイムスタンプ1545836400
<?php echo strtotime("last Thursday");//1545836400 ?>
<?php date('Y-m-d', strtotime("last Thursday"));//2018-12-27 ?>
月の最初の日first day of this month指定月の最初の日のUNIXタイムスタンプ1546268400
<?php echo strtotime("first day of this month");//1546268400 ?>
<?php echo date('Y-m-d', strtotime("first day of this month"));//2019-01-01 ?>
月の最後の日last day of this month指定月の最後の日のUNIXタイムスタンプ1548860400
<?php echo strtotime("last day of this month");//1548860400 ?>
<?php echo date('Y-m-d', strtotime("last day of this month"));//2019-01-31 ?>
指定日から + -2020-01-01 00:00:00 +1 seconds +1 min +1 hours +1 day +1 week +1 month +1 year指定日から + - したUNIXタイムスタンプ1612800061
<?php
$format = '2020-01-01 00:00:00 +1 seconds +1 min +1 hours +1 day +1 week +1 month +1 year';
echo strtotime($format);//1612800061
echo date('Y-m-d H:i:s', strtotime($format));//2021-02-09 01:01:01
?>

dateTimeクラス フォーマット

取得内容フォーマット文字説明戻り値の例
Y年 4 桁の数字1999 や 2019
y年 2 桁の数字99 や 19
L閏年かどうか。1なら閏年。0なら閏年ではない。1 か 0
$objDateTime = new DateTime();
echo $objDateTime->format('Y');//2019
echo $objDateTime->format('y');//19
echo $objDateTime->format('L');//0
F月 フルスペルの文字January~December
m月 数字。先頭にゼロをつける01~12
M月 3 文字形式Jan~Dec
n月 数字。先頭にゼロをつけない1~12
t月 指定した月の日数28~31
$objDateTime = new DateTime();
echo $objDateTime->format('F');//May
echo $objDateTime->format('m');//05
echo $objDateTime->format('M');//May
echo $objDateTime->format('n');//5
echo $objDateTime->format('t');//31
d日 2桁の数字(先頭にゼロがつく場合も)01~31
j日 数字。先頭にゼロをつけない1~31
$objDateTime = new DateTime();
echo $objDateTime->format('d');//07
echo $objDateTime->format('j');//7
曜日D3文字のテキスト形式Mon~Sun
lフルスペル形式Sunday~Saturday
N数字1(月曜) から 7(日曜)
w数字0(日曜) から 6(土曜)
W数字月曜日に始まる年単位の週番号
$objDateTime = new DateTime();
echo $objDateTime->format('D');//Wed
echo $objDateTime->format('l');//Wednesday
echo $objDateTime->format('N');//3
echo $objDateTime->format('w');//3
echo $objDateTime->format('W');//21
g12時間単位。先頭ゼロなし0~12
G24時間単位。先頭ゼロなし0~23
h12時間単位。先頭ゼロあり00~12
H24時間単位。先頭ゼロあり00~23
a午前/午後。小文字表示am pm
A午前/午後。大文字表示AM PM
$objDateTime = new DateTime();
echo $objDateTime->format('g');//12
echo $objDateTime->format('G');//0
echo $objDateTime->format('h');//12
echo $objDateTime->format('H');//00
echo $objDateTime->format('a');//pm
echo $objDateTime->format('A');//PM
i先頭ゼロあり00~59
$objDateTime = new DateTime();
echo $objDateTime->format('i');//59
s先頭ゼロあり00~59
$objDateTime = new DateTime();
echo $objDateTime->format('s');//01
ミリ秒vミリ秒654
$objDateTime = new DateTime();
echo $objDateTime->format('v');//000
マイクロ秒uマイクロ秒654321
$objDateTime = new DateTime();
echo $objDateTime->format('u');//000000
全日付cISO8601 フォーマット日付2019-05-15T01:04:54+09:00
rRFC2822 フォーマット日付Wed, 15 May 2019 01:04:54 +0900
$objDateTime = new DateTime();
echo $objDateTime->format('c');//2019-05-15T01:04:54+09:00
echo $objDateTime->format('r');//Wed, 15 May 2019 01:04:54 +0900
タイムゾーンオフセット秒数ZUTC(世界協定時間=グリニッジ天文台が有る場所東経0度の場所を基準にして決められている時間)の西側のタイムゾーン用のオフセット秒数は常に負になります。UTCの東側のオフセット秒数は常に正になります。 日本は32400なので、+9時間です。-43200 ~ 50400
$objDateTime = new DateTime();
echo $objDateTime->format('Z');//32400
UNIX時間からの秒数UUnix Epoch(エポック秒(UNIX時間))=1970年1月1日0時0分0秒からの秒数1557850516
$objDateTime = new DateTime();
echo $objDateTime->format('U');//1557850516

定義済み定数

以下の定数はフォーマットされた日付の文字列です。
<?php
echo DateTime::ATOM;//Y-m-d\TH:i:sP
echo '<br/>';
echo DateTime::COOKIE;//l, d-M-Y H:i:s T
echo '<br/>';
echo DateTime::ISO8601;//Y-m-d\TH:i:sO
echo '<br/>';
echo DateTime::RFC822;//D, d M y H:i:s O
echo '<br/>';
echo DateTime::RFC850;//l, d-M-y H:i:s T
echo '<br/>';
echo DateTime::RFC1036;//D, d M y H:i:s O
echo '<br/>';
echo DateTime::RFC1123;//D, d M Y H:i:s O
echo '<br/>';
echo DateTime::RFC2822;//D, d M Y H:i:s O
echo '<br/>';
echo DateTime::RFC3339;//Y-m-d\TH:i:sP
echo '<br/>';
echo DateTime::RSS;//D, d M Y H:i:s O
echo '<br/>';
echo DateTime::W3C;//Y-m-d\TH:i:sP
echo '<br/>';
?>
結果は
Y-m-d\TH:i:sP
l, d-M-Y H:i:s T
Y-m-d\TH:i:sO
D, d M y H:i:s O
l, d-M-y H:i:s T
D, d M y H:i:s O
D, d M Y H:i:s O
D, d M Y H:i:s O
Y-m-d\TH:i:sP
D, d M Y H:i:s O
Y-m-d\TH:i:sP
となります。


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

タグ: , ,

日付

投稿日:2017年5月4日
最終更新日:2019年05月22日

関連記事

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

この記事へのコメント

トラックバックurl

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

page top