DateTimeInterface::format

DateTimeImmutable::format

DateTime::format

date_format

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

DateTimeInterface::format -- DateTimeImmutable::format -- DateTime::format -- date_format指定した書式でフォーマットした日付を返す

説明

オブジェクト指向型

publicDateTimeInterface::format(string$format): string
publicDateTimeImmutable::format(string$format): string
publicDateTime::format(string$format): string

手続き型

指定した書式でフォーマットした日付を返します。

パラメータ

object

手続き型のみ: date_create() が返す DateTime オブジェクト

format

出力される日付文字列の書式。以下のオプションを参照ください。 定義済みの定数 も用意されており、たとえば DATE_RSS はフォーマット文字列 'D, d M Y H:i:s' と同じ意味になります。

以下の文字が format パラメータ文字列として認識されます
format 文字説明戻り値の例
------
d日。二桁の数字(先頭にゼロがつく場合も)01 から 31
D曜日。3文字のテキスト形式。Mon から Sun
j日。先頭にゼロをつけない。1 から 31
l (小文字の 'L')曜日。フルスペル形式。Sunday から Saturday
NISO 8601 形式の、曜日の数値表現1(月曜日)から 7(日曜日)
S英語形式の序数を表すサフィックス。2 文字。st, nd, rd または thjと一緒に使用する ことができる。
w曜日。数値。0 (日曜)から 6 (土曜)
z年間の通算日。数字。(ゼロから開始)0 から 365
------
WISO 8601 月曜日に始まる年単位の週番号例: 42 (年の第 42 週目)
------
F月。フルスペルの文字。January から December
m月。数字。先頭にゼロをつける。01 から 12
M月。3 文字形式。Jan から Dec
n月。数字。先頭にゼロをつけない。1 から 12
t指定した月の日数。28 から 31
------
L閏年であるかどうか。1なら閏年。0なら閏年ではない。
oISO 8601 形式の週番号による年。これは Y ほぼ同じだが、ISO 週番号 (W)が前年あるいは翌年に属する場合はそちらの年を使うという点が異なる。例: 1999 あるいは 2003
X拡張された年の数値表現。少なくとも4桁からなる数値。紀元前の場合は、- が付きます。西暦の場合は + が付きます。例: -0055, +0787, +1999, +10191
x必要に応じて拡張された年の数値表現。 拡張する必要がない場合は、通常の年の数値 (Y と同じ)。 少なくとも4桁からなる数値。紀元前の場合は、- が付きます。10000 (10000を含みます) を超える場合は、+ が付きます。例: -0055, 0787, 1999, +10191
Y年。少なくとも4桁からなる数値。紀元前の場合は、- が付きます。例: -0055, 0787, 1999, 2003, 10191
y年。2 桁の数字。例: 99 または 03
------
a午前または午後(小文字)am または pm
A午前または午後(大文字)AM または PM
BSwatch インターネット時間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
pP と同じですが、+00:00 ではなく Z を返します。 (PHP 8.0.0 以降で利用可能) 例: Z または +02:00
T既知のものについては、タイムゾーンの略称。そうでないものについては、GMT からのオフセット例: EST, MDT, +05
Zタイムゾーンのオフセット秒数。 UTC の西側のタイムゾーン用のオフセットは常に負です。そして、 UTC の東側のオフセットは常に正です。-43200 から 50400
全ての日付/時刻------
cISO 8601 日付2004-02-12T15:19:21+00:00
r» RFC 2822/» RFC 5322 形式でフォーマットされた日付例: Thu, 21 Dec 2000 16:01:07 +0200
UUnix Epoch (1970 年 1 月 1 日 0 時 0 分 0 秒) からの秒数time() も参照

フォーマット文字列中の認識されない文字は、そのまま表示されます。 Z 形式は、 gmdate() で使用した場合、常に 0 を返します。

注意:

この関数が受け付けるのは int のタイムスタンプだけです。したがって、書式指定文字 u が有用となるのは date_create() で作成したタイムスタンプを用いて date_format() を使用した場合のみです。

戻り値

成功した場合にフォーマット済みの日付文字列を返します。

変更履歴

バージョン説明
8.2.0 フォーマット文字に Xx が追加されました。
8.0.0 フォーマット文字 p が追加されました。

例1 DateTimeInterface::format() の例

オブジェクト指向型

<?php
$date
= new DateTimeImmutable('2000-01-01');
echo
$date->format('Y-m-d H:i:s');
?>

手続き型

<?php
$date
= date_create('2000-01-01');
echo
date_format($date, 'Y-m-d H:i:s');
?>

上の例の出力は以下となります。

2000-01-01 00:00:00

例2 例をもう少し

<?php
// デフォルトのタイムゾーンを設定します
date_default_timezone_set('UTC');
// 現在時刻で初期化
$date = new DateTimeImmutable();
// Wednesday のような値を出力
echo $date->format('l'), "\n";
// Wednesday 19th of October 2022 08:40:48 AM のような値を出力
echo $date->format('l jS \o\f F Y h:i:s A'), "\n";

// Wed, 19 Oct 2022 08:40:48 +0000 のような値を出力
echo $date->format(DateTimeInterface::RFC2822), "\n";
?>

フォーマット文字列の中で既知の文字が展開されることを防ぐために、 バックスラッシュでエスケープすることができます。 バックスラッシュ付きの文字が既に特殊な意味を持つ場合は、 バックスラッシュもエスケープする必要があるでしょう。

例3 フォーマット中に文字をエスケープする

<?php
$date
= new DateTimeImmutable();
// prints something like: Wednesday the 19th
echo $date->format('l \t\h\e jS');
?>

他の言語で日付をフォーマットするには、 DateTimeInterface::format() ではなく IntlDateFormatter::format() を使います。

注意

このメソッドはロケールを考慮しません。出力結果はすべて英語となります。

参考

To Top