PHPで日時を扱うのに強力なCarbonですが、今回はformat系のメソッドを試してみて、書式の一覧を確認したいなと思いまして、今回記事にまとめてみることにしました。
フォーマット書式
まずはフォーマットについてですが、PHP標準のDatetimeのformatを利用しているので、PHPのドキュメントが参考になると思います。
format 文字 | 説明 | 戻り値の例 |
---|---|---|
日 | --- | --- |
d | 日。二桁の数字(先頭にゼロがつく場合も) | 01 から 31 |
D | 曜日。3文字のテキスト形式。 | Mon から Sun |
j | 日。先頭にゼロをつけない。 | 1 から 31 |
l (小文字の 'L') | 曜日。フルスペル形式。 | Sunday から Saturday |
N | ISO-8601 形式の、曜日の数値表現 | 1(月曜日)から 7(日曜日) |
S | 英語形式の序数を表すサフィックス。2 文字。 | st, nd, rd または th。 jと一緒に使用する ことができる。 |
w | 曜日。数値。 | 0 (日曜)から 6 (土曜) |
z | 年間の通算日。数字。(ゼロから開始) | 0 から 365 |
週 | --- | --- |
W | ISO-8601 月曜日に始まる年単位の週番号 | 例: 42 (年の第 42 週目) |
月 | --- | --- |
F | 月。フルスペルの文字。 | January から December |
m | 月。数字。先頭にゼロをつける。 | 01 から 12 |
M | 月。3 文字形式。 | Jan から Dec |
n | 月。数字。先頭にゼロをつけない。 | 1 から 12 |
t | 指定した月の日数。 | 28 から 31 |
年 | --- | --- |
L | 閏年であるかどうか。 | 1なら閏年。0なら閏年ではない。 |
o | ISO-8601 形式の週番号による年。これは Y ほぼ同じだが、ISO 週番号 (W)が前年あるいは翌年に属する場合はそちらの年を使うという点が異なる。 | 例: 1999 あるいは 2003 |
Y | 年。4 桁の数字。 | 例: 1999または2003 |
y | 年。2 桁の数字。 | 例: 99 または 03 |
時 | --- | --- |
a | 午前または午後(小文字) | am または pm |
A | 午前または午後(大文字) | AM または PM |
B | Swatch インターネット時間 | 000 から 999 |
g | 時。12時間単位。先頭にゼロを付けない。 | 1 から 12 |
G | 時。24時間単位。先頭にゼロを付けない。 | 0 から 23 |
h | 時。数字。12 時間単位。 | 01 から 12 |
H | 時。数字。24 時間単位。 | 00 から 23 |
i | 分。先頭にゼロをつける。 | 00 から 59 |
s | 秒。先頭にゼロをつける。 | 00 から 59 |
u | マイクロ秒。 date() の場合、これは常に 000000 となることに注意しましょう。というのも、 この関数が受け取るパラメータは int 型だからです。 一方 DateTime をマイクロ秒つきで作成した場合は、 DateTime::format() はマイクロ秒にも対応しています。 | 例: 654321 |
v | ミリ秒。 uと同じ注釈が当てはまります。 | 例: 654 |
タイムゾーン | --- | --- |
e | タイムゾーン識別子 | 例: UTC, GMT, Atlantic/Azores |
I (大文字の i) | サマータイム中か否か | 1ならサマータイム中。 0ならそうではない。 |
O | グリニッジ標準時 (GMT) との時差。時間と分の間にコロンは入りません。 | 例: +0200 |
P | グリニッジ標準時 (GMT) との時差。時間と分をコロンで区切った形式 | 例: +02:00 |
p | P と同じですが、+00:00 ではなく Z を返します。 | 例: +02:00 |
T | タイムゾーンの略称 | 例: EST, MDT ... |
Z | タイムゾーンのオフセット秒数。 UTC の西側のタイムゾーン用のオフセットは常に負です。そして、 UTC の東側のオフセットは常に正です。 | -43200 から 50400 |
全ての日付/時刻 | --- | --- |
c | ISO 8601 日付 | 2004-02-12T15:19:21+00:00 |
r | » RFC 2822 フォーマットされた日付 | 例: Thu, 21 Dec 2000 16:01:07 +0200 |
U | Unix Epoch (1970 年 1 月 1 日 0 時 0 分 0 秒) からの秒数 | time() も参照 |
フォーマット一覧
Carbonに用意されているformat系のメソッドについてまとめていきたいと思います。処理については、Converterというトレイトが参考になります。
メソッド名 | format | 出力例 |
---|---|---|
__toString() | Y-m-d H:i:s | 2021-01-23 12:34:56 |
toDateString() | Y-m-d | 2021-01-23 |
toFormattedDateString() | M j, Y | Jan 23, 2021 |
toTimeString() | H:i:s | 12:34:56 |
toTimeString('minute') | H:i | 12:34 |
toTimeString('millisecond'); | H:i:s.v | 12:34:56.000 |
toTimeString('microsecond') | H:i:s.u | 12:34:56.000000 |
toDateTimeString() | Y-m-d H:i:s | 2021-01-23 12:34:56 |
toDateTimeString('minute') | Y-m-d H:i | 2021-01-23 12:34 |
toDateTimeLocalString() | Y-m-d\T H:i:s | 2021-01-23T12:34:56 |
toDateTimeLocalString('minute') | Y-m-d\T H:i | 2021-01-23T12:34 |
toDayDateTimeString() | D, M j, Y g:i A | Sat, Jan 23, 2021 12:34 PM |
toAtomString() | Y-m-d\TH:i:sP | 2021-01-23T12:34:56+09:00 |
toCookieString() | l, d-M-Y H:i:s T | Saturday, 23-Jan-2021 12:34:56 JST |
toIso8601String() | Y-m-d\TH:i:sP | 2021-01-23T12:34:56+09:00 |
toRfc822String() | Y-m-d\TH:i:sP|2021-01-23T12:34:56+09:00 | |
toIso8601ZuluString() | Y-m-d\TH:i:s\Z | 2021-01-23T03:34:56Z |
toIso8601ZuluString('minute') | Y-m-d\TH:i\Z | 2021-01-23T03:34Z |
toRfc850String() | l, d-M-y H:i:s T | Saturday, 23-Jan-21 12:34:56 JST |
toRfc1036String() | D, d M y H:i:s O | Sat, 23 Jan 21 12:34:56 +0900 |
toRfc1123String() | D, d M Y H:i:s O | Sat, 23 Jan 2021 12:34:56 +0900 |
toRfc2822String() | D, d M Y H:i:s O | Sat, 23 Jan 2021 12:34:56 +0900 |
toRfc3339String() | Y-m-d\TH:i:sP | 2021-01-23T12:34:56+09:00 |
toRfc3339String(true) | Y-m-d\TH:i:s.vP | 2021-01-23T12:34:56.000+09:00 |
toRssString() | D, d M Y H:i:s O | Sat, 23 Jan 2021 12:34:56 +0900 |
toW3cString() | Y-m-d\TH:i:sP | 2021-01-23T12:34:56+09:00 |
toRfc7231String() | D, d M Y H:i:s \G\M\T | Sat, 23 Jan 2021 03:34:56 GMT |
toString | ddd MMM DD YYYY HH:mm:ss [GMT]ZZ (isoFormat()を利用) | Sat Jan 23 2021 12:34:56 GMT+0900 |
toISOString() | 2021-01-23T03:34:56.000000Z | |
toISOString(true) | 2021-01-23T12:34:56.000000+09:00 | |
toJSON() | 2021-01-23T03:34:56.000000Z |
※一部、toTimeString()
を利用したメソッドのミリ秒、マイクロ秒の表記は省略しています。
※時間はsetTestNow('2021-01-23 12:34:56')
をして時間を固定しています。