PHPサンプル
UPDATE:2019年06月12日
PHP strtotime()/DateTimeクラス が理解できる【 日付/時刻のフォーマット文字列(書式)】
PHP5 PHP7
日付/時刻フォーマット(書式)文字列
strtotime()関数 や DateTimeクラス が理解する 日付や時刻のフォーマット(書式)文字列の表記方法は数多くあります。通常以下のように「2020-01-02 03:04:05」など、分かり易い日付や時刻のフォーマット(書式)で指定する場合が殆どだと思います。
日付のフォーマット文字列の例
'2020-01-02'
'01/02/2020'
'Jan. 02, 2020'
'02 Jan 2020'
'01/02/2020'
'Jan. 02, 2020'
'02 Jan 2020'
時刻のフォーマット文字列の例
'23:59:59'
'23.59.59'
'23.59.59'
日時のフォーマット文字列の例
'2020-01-02 03:04:05'
当然これらの一般的なフォーマット文字列の表記方法も理解可能です。
1 2 3 4 5 6 7 8 | //strtotime() echo date('Y-m-d H:i:s a' ,strtotime('2020-01-02 03:04:05'))."<br>\n"; //出力 2020-01-02 03:04:05 am //DateTimeクラス $objDateTime = new DateTime('2020-01-02 03:04:05'); echo $objDateTime->format('Y-m-d H:i:s a')."<br>\n"; //出力 2020-01-02 03:04:05 am |
strtotime()関数 や DateTimeクラス はさらに多くの日付や時刻のフォーマット文字列を読み込むことが出来ます。それらのルールや書式を紹介します。
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 "-" mm | 4桁の年、月 (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.-])* m | 4桁の年、月の文字表記 (日は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
となります。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
となります。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]+ meridian | MS 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
となります。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
となります。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
となります。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
となります。04:08:00 am
04:08:37 am
04:08:37 am
04:08:37 am
04:08:37 am
18:34:10 pm
タグ(=記事関連ワード)
日付
投稿日:2019年6月11日
最終更新日:2019年06月12日
最終更新日:2019年06月12日
このカテゴリの他のページ
この記事へのコメント
トラックバックurl
https://wepicks.net/phpsample-date-strtotime_datetime_fmt/trackback/