PHPサンプル
UPDATE:2021年06月11日
PHP 日付のフォーマット date()/strtotime()/DateTimeクラス
PHP5 PHP7 PHP8
出力内容はサンプルの結果は 2019-01-01 00:00:00 に実行した場合のものです。
結果は
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
| |||
曜日 | D | 3文字のテキスト形式 | 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
| |||
時 | g | 12時間単位。先頭ゼロなし | 1~12 |
G | 24時間単位。先頭ゼロなし | 0~23 | |
h | 12時間単位。先頭ゼロあり | 01~12 | |
H | 24時間単位。先頭ゼロあり | 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
| |||
全日付 | c | ISO8601 フォーマット日付 | 2019-05-15T01:04:54+09:00 |
r | RFC2822 フォーマット日付 | 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
| |||
タイムゾーンオフセット秒数 | Z | UTC(世界協定時間=グリニッジ天文台が有る場所東経0度の場所を基準にして決められている時間)の西側のタイムゾーン用のオフセット秒数は常に負になります。UTCの東側のオフセット秒数は常に正になります。 日本は32400なので、+9時間です。 | -43200 ~ 50400 |
echo date('Z');//32400
| |||
UNIX時間からの秒数 | U | Unix 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 "-" 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
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
| |||
曜日 | D | 3文字のテキスト形式 | 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
| |||
時 | g | 12時間単位。先頭ゼロなし | 1~12 |
G | 24時間単位。先頭ゼロなし | 0~23 | |
h | 12時間単位。先頭ゼロあり | 01~12 | |
H | 24時間単位。先頭ゼロあり | 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
| |||
全日付 | c | ISO8601 フォーマット日付 | 2019-05-15T01:04:54+09:00 |
r | RFC2822 フォーマット日付 | 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
| |||
タイムゾーンオフセット秒数 | Z | UTC(世界協定時間=グリニッジ天文台が有る場所東経0度の場所を基準にして決められている時間)の西側のタイムゾーン用のオフセット秒数は常に負になります。UTCの東側のオフセット秒数は常に正になります。 日本は32400なので、+9時間です。 | -43200 ~ 50400 |
$objDateTime = new DateTime();
echo $objDateTime->format('Z');//32400
| |||
UNIX時間からの秒数 | U | Unix 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
となります。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日
最終更新日:2021年06月11日
このカテゴリの他のページ
この記事へのコメント
トラックバックurl
https://wepicks.net/phpsample-date-format/trackback/