menu
ホーム > PHPサンプル > 日付系 > PHP 日付のフォーマット date()/strtotime()/DateTimeクラス
PHPサンプル

UPDATE:2021年06月11日

PHP 日付のフォーマット date()/strtotime()/DateTimeクラス

PHP 日付のフォーマット date()/strtotime()/DateTimeクラス | wepicks!
PHP5 PHP7 PHP8

PHP 日付のフォーマット

PHP で日付や時刻を取得する関数やクラス、date()関数strtotime()関数DateTimeクラス には、パラメーター(関数やクラスに送る値)にフォーマット(書式)があります。フォーマットに従って記述することで、これらの関数やクラスが正しく日時を理解することが出来ます。例えば echo date('Y/m/d'); とすると、現在の年月日が 2019/06/01 という文字列として返ってきます。

書式 date()
日時の文字列 = date('日付/時刻フォーマット文字列' [,UNIXタイムスタンプ]);
//[ ]省略可(タイムスタンプがない場合現在日時となる)
//返り値は文字列(string)

書式 strtotime()
指定日時のUNIXタイムスタンプ = strtotime('英文形式 OR 日付/時刻 フォーマット文字列');
//返り値は数値(int)、失敗時は FALSE を返す

書式 DateTimeクラス
オブジェクト = new DateTime(['英文形式 OR 日付/時刻のフォーマット文字列']);
//[ ]は省略可能です。


date() が理解できる 日付/時刻フォーマット文字列

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時間単位。先頭ゼロなし1~12
G24時間単位。先頭ゼロなし0~23
h12時間単位。先頭ゼロあり01~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と同じ注釈が当てはまります。000~999
echo date('v');//000
マイクロ秒uマイクロ秒 (PHP 5.2.2 で追加)。date() の場合、これは常に 000000 となることに注意。というのも、この関数が受け取るパラメータは integer 型だからです。一方 DateTime をマイクロ秒つきで作成した場合は、DateTime::format() はマイクロ秒にも対応しています。000000~999999
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
英語形式の序数S英語形式の序数を表すサフィックス。2 文字。st, nd, rd または th。 jと一緒に使用する ことができる。
echo date('S');//st

strtotime() が理解できる 英文形式フォーマット文字列

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クラス が理解できる 英文形式フォーマット文字列

DateTimeクラス 英文形式フォーマット文字列

DateTimeクラスを呼び出す際に、英文形式フォーマット文字列で日時を指定することが出来ます。指定した日時に合わせたオブジェクトが作成されます。
出力内容はサンプルの結果は 2019-01-01 00:00:00 に実行した場合のものです。
取得内容英文形式のフォーマット文字列内容出力内容
今現在now今現在の日時のオブジェクト2019-01-01 00:00:00
<?php
$objDateTime = new DateTime('now');
echo $objDateTime->format('Y-m-d H:i:s');//出力 2019-01-01 00:00:00
?>
本日today本日の日時のオブジェクト2019-01-01 00:00:00
<?php
$objDateTime = new DateTime('today');
echo $objDateTime->format('Y-m-d H:i:s');//出力 2019-01-01 00:00:00
?>
昨日yesterday昨日の日時のオブジェクト2018-12-31 00:00:00
<?php
$objDateTime = new DateTime('yesterday');
echo $objDateTime->format('Y-m-d H:i:s');//出力 2018-12-31 00:00:00
?>
明日tomorrow明日の日時のオブジェクト2019-01-02 00:00:00
<?php
$objDateTime = new DateTime('tomorrow');
echo $objDateTime->format('Y-m-d H:i:s');//出力 2019-01-02 00:00:00
?>
今週this week今週の月曜日の日時のオブジェクト2018-12-31 00:00:00
<?php
$objDateTime = new DateTime('this week');
echo $objDateTime->format('Y-m-d H:i:s');//出力 2018-12-31 00:00:00
?>
先週last week先週の月曜日の日時のオブジェクト2018-12-24 00:00:00
<?php
$objDateTime = new DateTime('last week');
echo $objDateTime->format('Y-m-d H:i:s');//出力 2018-12-24 00:00:00
?>
来週next week来週の月曜日の日時のオブジェクト2019-01-07 00:00:00
<?php
$objDateTime = new DateTime('next week');
echo $objDateTime->format('Y-m-d H:i:s');//出力 2019-01-07 00:00:00
?>
今月this month今月の同日の日時のオブジェクト2019-01-01 00:00:00
<?php
$objDateTime = new DateTime('this month');
echo $objDateTime->format('Y-m-d H:i:s');//出力 2019-01-01 00:00:00
?>
先月last month先月の同日の日時のオブジェクト2018-12-01 00:00:00
<?php
$objDateTime = new DateTime('last month');
echo $objDateTime->format('Y-m-d H:i:s');//出力 2018-12-01 00:00:00
?>
来月next month来月の同日の日時のオブジェクト2019-02-01 00:00:00
<?php
$objDateTime = new DateTime('next month');
echo $objDateTime->format('Y-m-d H:i:s');//出力 2019-02-01 00:00:00
?>
今年this year今年の同日の日時のオブジェクト2019-01-01 00:00:00
<?php
$objDateTime = new DateTime('this year');
echo $objDateTime->format('Y-m-d H:i:s');//出力 2019-01-01 00:00:00
?>
去年last year去年の同日の日時のオブジェクト2018-01-01 00:00:00
<?php
$objDateTime = new DateTime('last year');
echo $objDateTime->format('Y-m-d H:i:s');//出力 2018-01-01 00:00:00
?>
来年next year来年の同日の日時のオブジェクト2020-01-01 00:00:00
<?php
$objDateTime = new DateTime('next year');
echo $objDateTime->format('Y-m-d H:i:s');//出力 2020-01-01 00:00:00
?>
指定日付1 January 2019指定日付の日時のオブジェクト2019-01-01 00:00:00
<?php
$objDateTime = new DateTime('1 January 2019');
echo $objDateTime->format('Y-m-d H:i:s');//出力 2019-01-01 00:00:00
?>
指定日時2019-01-02 03:04:05指定日時の日時のオブジェクト2019-01-02 03:04:05
<?php
$objDateTime = new DateTime('2019-01-02 03:04:05');
echo $objDateTime->format('Y-m-d H:i:s');//出力 2019-01-02 03:04:05
?>
本日から 年 月 日 週 を加算 (+ 省略可/- も可)+1 day +1 week +1 month +1 year年 月 日 週 の + - 指定の日時のオブジェクト2020-02-09 00:00:00
<?php
$objDateTime = new DateTime('+1 day +1 week +1 month +1 year');
echo $objDateTime->format('Y-m-d H:i:s');//出力 2020-02-09 00:00:00
?>
今から+1時間1分1秒 (+ 省略可/- も可)+1 hours +1 min +1 seconds時、分、秒 の + - 指定の日時のオブジェクト2019-01-01 01:01:01
<?php
$objDateTime = new DateTime('+1 hours +1 min +1 seconds');
echo $objDateTime->format('Y-m-d H:i:s');//出力 2019-01-01 01:01:01
?>
次の木曜日Thursday
next Thursday
次の木曜日の日時のオブジェクト2019-01-03 00:00:00
<?php
$objDateTime = new DateTime('Thursday');
echo $objDateTime->format('Y-m-d H:i:s');//出力 2019-01-03 00:00:00
?>
<?php
$objDateTime = new DateTime('next Thursday');
echo $objDateTime->format('Y-m-d H:i:s');//出力 2019-01-03 00:00:00
?>
前の木曜日last Thursday前の木曜日の日時のオブジェクト2018-12-27 00:00:00
<?php
$objDateTime = new DateTime('last Thursday');
echo $objDateTime->format('Y-m-d H:i:s');//出力 2018-12-27 00:00:00
?>
月の最初の日first day of this month指定月の最初の日の日時のオブジェクト2019-01-01 00:00:00
<?php
$objDateTime = new DateTime('first day of this month');
echo $objDateTime->format('Y-m-d H:i:s');//出力 2019-01-01 00:00:00
?>
月の最後の日last day of this month指定月の最後の日の日時のオブジェクト2019-01-31 00:00:00
<?php
$objDateTime = new DateTime('last day of this month');
echo $objDateTime->format('Y-m-d H:i:s');//出力 2019-01-31 00:00:00
?>
指定日から + -2020-01-01 00:00:00 +1 seconds +1 min +1 hours +1 day +1 week +1 month +1 year指定日から + - した日時のオブジェクト2021-02-09 01:01:01
<?php
$objDateTime = new DateTime('2020-01-01 00:00:00 +1 seconds +1 min +1 hours +1 day +1 week +1 month +1 year');
echo $objDateTime->format('Y-m-d H:i:s');//出力 2021-02-09 01:01:01
?>

strtotime()/DateTimeクラス が理解できる 日付のフォーマット文字列

strtotime() や DateTimeクラス が理解する 日付のフォーマット(書式)文字列の表記方法です。

シンボル一覧

シンボルは以下の「各国ごとの日付フォーマット(書式)の表記法」の書式の記号に照らし合わせて下さい。
シンボル書式
y
[0-9]{1,4}
※0~9 を使用した 1桁~4桁 の数値
"00", "78", "08", "8", "2008"
yy
[0-9]{2}
※0~9 を使用した 2桁 の数値
"00", "08", "78"
YY
[0-9]{4}
※0~9 を使用した 4桁 の数値
"2000", "2008", "1978"
m
'january' | 'february' | 'march' | 'april' | 'may' | 'june' | 'july' | 'august' | 'september' | 'october' | 'november' | 'december' | 'jan' | 'feb' | 'mar' | 'apr' | 'may' | 'jun' | 'jul' | 'aug' | 'sep' | 'sept' | 'oct' | 'nov' | 'dec' | "I" | "II" | "III" | "IV" | "V" | "VI" | "VII" | "VIII" | "IX" | "X" | "XI" | "XII"
※上記内容の何れか
"january", "jan"
M
'jan' | 'feb' | 'mar' | 'apr' | 'may' | 'jun' | 'jul' | 'aug' | 'sep' | 'sept' | 'oct' | 'nov' | 'dec'
※上記内容の何れか
 
mm
"0"? [0-9] | "1"[0-2]
※1桁:0~9、2桁:01~09 10 11 12
"0", "04", "7", "12"
MM
"0" [0-9] | "1"[0-2]
※2桁:00~09 10 11 12
"00", "04", "07", "12"
daysuf
"st" | "nd" | "rd" | "th"
※上記の何れか
 
dd
([0-2]?[0-9] | "3"[01]) daysuf?
"7th", "22nd", "31"
DD
"0" [0-9] | [1-2][0-9] | "3" [01]
"07", "31"

各国ごとの日付フォーマット(書式)の表記法

書式の記号の内容は上記表のシンボルを確認下さい。 ※\t はスペースです。
書式説明
mm "/" ddアメリカ式の月、日"5/12", "10/27"
mm "/" dd "/" yアメリカ式の月、日、年"12/22/78", "1/17/2006", "1/17/6"
YY "/" mm "/" ddスラッシュで区切られた、4桁の年、月、日"2008/6/30", "1978/12/22"
YY "-" mm4桁の年、月 (GNU)"2008-6", "2008-06", "1978-12"
y "-" mm "-" ddハイフンで区切られた、年、月、日"2008-6-30", "78-12-22", "8-6-21"
dd [.\t-] mm [.-] YYドットかタブかハイフンで区切られた、日、月、4桁の年"30-6-2008", "22.12.1978"
dd [.\t] mm "." yyドットかタブで区切られた、日、月、2桁の年"30.6.08", "22\t12.78"
dd ([ \t.-])* m ([ \t.-])* y日、月の文字表記、年"30-June 2008", "22DEC78", "14 III 1879"
m ([ \t.-])* YY月の文字表記、4桁の年 (日は1日にリセットされる)"June 2008", "DEC1978", "March 1879"
YY ([ \t.-])* m4桁の年、月の文字表記 (日は1日にリセットされる)"2008 June", "1978-XII", "1879.MArCH"
m ([ .\t-])* dd [,.stndrh\t ]+ y月の文字表記、日、年"July 1st, 2008", "April 17, 1790", "May.9,78"
m ([ .\t-])* dd [,.stndrh\t ]*月の文字表記、日"July 1st,", "Apr 17", "May.9"
d ([ .\t-])* m日、月の文字表記"1 July", "17 Apr", "9.May"
M "-" DD "-" y月の省略形、日、年"May-09-78", "Apr-17-1790"
y "-" M "-" DD年、月の省略形、日"78-Dec-22", "1814-MAY-17"
YY年 (年だけの指定)"1978", "2008"
m月の文字表記 (月だけの指定)"March", "jun", "DEC"

strtotime()で各国日付フォーマット文字列を扱う

実行日時 2019-06-11 16:59:15 の場合
<?php
echo date('Y-m-d H:i:s' ,strtotime('5/12'))."<br/>\n";
echo date('Y-m-d H:i:s' ,strtotime('12/22/78'))."<br/>\n";
echo date('Y-m-d H:i:s' ,strtotime('2008/6/30'))."<br/>\n";
echo date('Y-m-d H:i:s' ,strtotime('2008-6'))."<br/>\n";
echo date('Y-m-d H:i:s' ,strtotime('2008-6-30'))."<br/>\n";
echo date('Y-m-d H:i:s' ,strtotime('30-6-2008'))."<br/>\n";
echo date('Y-m-d H:i:s' ,strtotime('30.6.08'))."<br/>\n";
echo date('Y-m-d H:i:s' ,strtotime('30-June 2008'))."<br/>\n";
echo date('Y-m-d H:i:s' ,strtotime('June 2008'))."<br/>\n";
echo date('Y-m-d H:i:s' ,strtotime('2008 June'))."<br/>\n";
echo date('Y-m-d H:i:s' ,strtotime('July 1st, 2008'))."<br/>\n";
echo date('Y-m-d H:i:s' ,strtotime('July 1st'))."<br/>\n";
echo date('Y-m-d H:i:s' ,strtotime('May-09-78'))."<br/>\n";
echo date('Y-m-d H:i:s' ,strtotime('78-Dec-22'))."<br/>\n";
echo date('Y-m-d H:i:s' ,strtotime('1978'))."<br/>\n";
echo date('Y-m-d H:i:s' ,strtotime('March'))."<br/>\n";
?>
結果は
2019-05-12 00:00:00
1978-12-22 00:00:00
2008-06-30 00:00:00
2008-06-01 00:00:00
2008-06-30 00:00:00
2008-06-30 00:00:00
2008-06-30 00:00:00
2008-06-30 00:00:00
2008-06-01 00:00:00
2008-06-01 00:00:00
2008-07-01 00:00:00
2019-07-01 00:00:00
1978-05-09 00:00:00
1978-12-22 00:00:00
1978-06-11 16:59:15
2019-03-11 00:00:00
となります。

DateTimeクラスで各国日付フォーマット文字列を扱う

実行日時 2019-06-11 16:59:15 の場合
<?php
$objDateTime = new DateTime('5/12');
echo $objDateTime->format('Y-m-d H:i:s')."<br/>\n";

$objDateTime = new DateTime('12/22/78');
echo $objDateTime->format('Y-m-d H:i:s')."<br/>\n";

$objDateTime = new DateTime('2008/6/30');
echo $objDateTime->format('Y-m-d H:i:s')."<br/>\n";

$objDateTime = new DateTime('2008-6');
echo $objDateTime->format('Y-m-d H:i:s')."<br/>\n";

$objDateTime = new DateTime('2008-6-30');
echo $objDateTime->format('Y-m-d H:i:s')."<br/>\n";

$objDateTime = new DateTime('30-6-2008');
echo $objDateTime->format('Y-m-d H:i:s')."<br/>\n";

$objDateTime = new DateTime('30.6.08');
echo $objDateTime->format('Y-m-d H:i:s')."<br/>\n";

$objDateTime = new DateTime('30-June 2008');
echo $objDateTime->format('Y-m-d H:i:s')."<br/>\n";

$objDateTime = new DateTime('June 2008');
echo $objDateTime->format('Y-m-d H:i:s')."<br/>\n";

$objDateTime = new DateTime('2008 June');
echo $objDateTime->format('Y-m-d H:i:s')."<br/>\n";

$objDateTime = new DateTime('July 1st, 2008');
echo $objDateTime->format('Y-m-d H:i:s')."<br/>\n";

$objDateTime = new DateTime('July 1st');
echo $objDateTime->format('Y-m-d H:i:s')."<br/>\n";

$objDateTime = new DateTime('May-09-78');
echo $objDateTime->format('Y-m-d H:i:s')."<br/>\n";

$objDateTime = new DateTime('78-Dec-22');
echo $objDateTime->format('Y-m-d H:i:s')."<br/>\n";

$objDateTime = new DateTime('1978');
echo $objDateTime->format('Y-m-d H:i:s')."<br/>\n";

$objDateTime = new DateTime('March');
echo $objDateTime->format('Y-m-d H:i:s')."<br/>\n";
?>
結果は
2019-05-12 00:00:00
1978-12-22 00:00:00
2008-06-30 00:00:00
2008-06-01 00:00:00
2008-06-30 00:00:00
2008-06-30 00:00:00
2008-06-30 00:00:00
2008-06-30 00:00:00
2008-06-01 00:00:00
2008-06-01 00:00:00
2008-07-01 00:00:00
2019-07-01 00:00:00
1978-05-09 00:00:00
1978-12-22 00:00:00
1978-06-11 16:59:15
2019-03-11 00:00:00
となります。

ISO 8601 に準拠した日付フォーマット(書式)の表記法

書式説明
YY MM DD年、月、日の8桁"15810726", "19780417", "18140517"
YY "/" MM "/" DDスラッシュで区切られた、4桁の年、月、日"2008/06/30", "1978/12/22"
yy "-" MM "-" DDハイフンで区切られた、2桁の年、月、日"08-06-30", "78-12-22"
[+-]? YY "-" MM "-" DD符号つきまたは符号なしの4桁の年、月、日"-0002-07-26", "+1978-04-17", "1814-05-17"

strtotime()/DateTimeクラス が理解できる 時刻のフォーマット文字列

strtotime() や DateTimeクラス が理解する 時刻のフォーマット(書式)文字列の表記方法です。

シンボル一覧

シンボル書式
frac. [0-9]+".21342", ".85"
hh"0"?[1-9] | "1"[0-2]"04", "7", "12"
HH[01][0-9] | "2"[0-4]"04", "07", "19"
meridian[AaPp] .? [Mm] .? [\0\t ]"A.m.", "pM", "am."
MM[0-5][0-9]"00", "12", "59"
II[0-5][0-9]"00", "12", "59"
space[ \t] 
tz"("? [A-Za-z]{1,6} ")"? | [A-Z][a-z]+([_/][A-Z][a-z]+)+"CEST", "Europe/Amsterdam", "America/Indiana/Knox"
tzcorrection"GMT"? [+-] hh ":"? MM?"+0400", "GMT-07:00", "-07:00"

12時間制の時刻フォーマット(書式)の表記

書式説明
hh space? meridian時、午前/午後"4 am", "5PM"
hh [.:] MM space? meridian時、分、午前/午後"4:08 am", "7:19P.M."
hh [.:] MM [.:] II space? meridian時、分、秒、午前/午後"4:08:37 am", "7:19:19P.M."
hh ":" MM ":" II [.:] [0-9]+ meridianMS SQL (時、分、秒、端数、午前/午後), PHP 5.3 以降で利用可能"4:08:39:12313am"

strtotimeで12時間制の時刻フォーマット文字列を扱う

<?php
echo date('H:i:s a' ,strtotime('4 am'))."<br/>\n";
echo date('H:i:s a' ,strtotime('4:08 am'))."<br/>\n";
echo date('H:i:s a' ,strtotime('4:08:37 am'))."<br/>\n";
echo date('H:i:s a' ,strtotime('4:08:39:12313am'))."<br/>\n";
?>
結果は
04:00:00 am
04:08:00 am
04:08:37 am
04:08:39 am
となります。

DateTimeクラスで12時間制の時刻フォーマット文字列を扱う

<?php
$objDateTime = new DateTime('4 am');
echo $objDateTime->format('H:i:s a')."<br/>\n";

$objDateTime = new DateTime('4:08 am');
echo $objDateTime->format('H:i:s a')."<br/>\n";

$objDateTime = new DateTime('4:08:37 am');
echo $objDateTime->format('H:i:s a')."<br/>\n";

$objDateTime = new DateTime('4:08:39:12313am');
echo $objDateTime->format('H:i:s a')."<br/>\n";
?>
結果は
04:00:00 am
04:08:00 am
04:08:37 am
04:08:39 am
となります。

24時間制の時刻フォーマット(書式)の表記

書式説明
't'? HH [.:] MM時、分"04:08", "19.19", "T23:43"
't'? HH MM時、分(コロンなし)"0408", "t1919", "T2343"
't'? HH [.:] MM [.:] II時、分、秒"04.08.37", "t19:19:19"
't'? HH MM II時、分、秒(コロンなし)"040837", "T191919"
't'? HH [.:] MM [.:] II space? ( tzcorrection | tz )時、分、秒、タイムゾーン"040837CEST", "T191919-0700"
't'? HH [.:] MM [.:] II frac時、分、秒、端数"04.08.37.81412", "19:19:19.532453"
tz | tzcorrectionタイムゾーン"CEST", "Europe/Amsterdam", "+0430", "GMT-06:00"

strtotimeで24時間制の時刻フォーマット文字列を扱う

<?php
echo date('H:i:s a' ,strtotime('04:08'))."<br/>\n";
echo date('H:i:s a' ,strtotime('0408'))."<br/>\n";
echo date('H:i:s a' ,strtotime('04.08.37'))."<br/>\n";
echo date('H:i:s a' ,strtotime('040837'))."<br/>\n";
echo date('H:i:s a' ,strtotime('040837CEST'))."<br/>\n";
echo date('H:i:s a' ,strtotime('04.08.37.81412'))."<br/>\n";
echo date('H:i:s a' ,strtotime('CEST'))."<br/>\n";
?>
結果は
04:08:00 am
04:08:00 am
04:08:37 am
04:08:37 am
11:08:37 am
04:08:37 am
01:34:10 am
となります。

DateTimeクラスで24時間制の時刻フォーマット文字列を扱う

<?php
$objDateTime = new DateTime('04:08');
echo $objDateTime->format('H:i:s a')."<br/>\n";

$objDateTime = new DateTime('0408');
echo $objDateTime->format('H:i:s a')."<br/>\n";

$objDateTime = new DateTime('04.08.37');
echo $objDateTime->format('H:i:s a')."<br/>\n";

$objDateTime = new DateTime('040837');
echo $objDateTime->format('H:i:s a')."<br/>\n";

$objDateTime = new DateTime('040837CEST');
echo $objDateTime->format('H:i:s a')."<br/>\n";

$objDateTime = new DateTime('04.08.37.81412');
echo $objDateTime->format('H:i:s a')."<br/>\n";

$objDateTime = new DateTime('CEST');
echo $objDateTime->format('H:i:s a')."<br/>\n";
?>
結果は
04:08:00 am
04:08:00 am
04:08:37 am
04:08:37 am
04:08:37 am
04:08:37 am
18:34:10 pm
となります。

DateTime format()メソッド が理解できる 日付/時刻フォーマット文字列

DateTimeクラス format()メソッド フォーマット

取得内容フォーマット文字説明戻り値の例
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時間単位。先頭ゼロなし1~12
G24時間単位。先頭ゼロなし0~23
h12時間単位。先頭ゼロあり01~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
となります。


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

日付

投稿日:2019年5月21日
最終更新日:2021年06月11日

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

menu-page

この記事へのコメント

トラックバックurl

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

page top