1
0
mirror of https://github.com/php/doc-ja.git synced 2026-03-24 07:02:08 +01:00
Files
2025-11-01 00:38:03 +09:00

517 lines
20 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 3a8c3e77df070a046c9d5b56b68926ca2d7e5ee3 Maintainer: takagi Status: ready -->
<!-- Credits: mumumu -->
<refentry xml:id="datetime.format" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>DateTimeInterface::format</refname>
<refname>DateTimeImmutable::format</refname>
<refname>DateTime::format</refname>
<refname>date_format</refname>
<refpurpose>指定した書式でフォーマットした日付を返す</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<para>&style.oop;</para>
<methodsynopsis role="DateTimeInterface">
<modifier>public</modifier> <type>string</type><methodname>DateTimeInterface::format</methodname>
<methodparam><type>string</type><parameter>format</parameter></methodparam>
</methodsynopsis>
<methodsynopsis role="DateTimeImmutable">
<modifier>public</modifier> <type>string</type><methodname>DateTimeImmutable::format</methodname>
<methodparam><type>string</type><parameter>format</parameter></methodparam>
</methodsynopsis>
<methodsynopsis role="DateTime">
<modifier>public</modifier> <type>string</type><methodname>DateTime::format</methodname>
<methodparam><type>string</type><parameter>format</parameter></methodparam>
</methodsynopsis>
<para>&style.procedural;</para>
<methodsynopsis>
<type>string</type><methodname>date_format</methodname>
<methodparam><type>DateTimeInterface</type><parameter>object</parameter></methodparam>
<methodparam><type>string</type><parameter>format</parameter></methodparam>
</methodsynopsis>
<para>
指定した書式でフォーマットした日付を返します。
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<variablelist>
&date.datetime.description;
<varlistentry>
<term><parameter>format</parameter></term>
<listitem>
<para>
出力される日付文字列の書式。以下のオプションを参照ください。
<link linkend="datetimeinterface.constants.types">定義済みの定数</link>
も用意されており、たとえば <constant>DATE_RSS</constant> はフォーマット文字列
<literal>'D, d M Y H:i:s'</literal> と同じ意味になります。
</para>
<para>
<table>
<title>以下の文字が <parameter>format</parameter>
パラメータ文字列として認識されます</title>
<tgroup cols="3">
<thead>
<row>
<entry><parameter>format</parameter> 文字</entry>
<entry>説明</entry>
<entry>戻り値の例</entry>
</row>
</thead>
<tbody>
<row>
<entry align="center"><emphasis></emphasis></entry>
<entry>---</entry>
<entry>---</entry>
</row>
<row>
<entry><literal>d</literal></entry>
<entry>日。二桁の数字(先頭にゼロがつく場合も)</entry>
<entry><literal>01</literal> から <literal>31</literal></entry>
</row>
<row>
<entry><literal>D</literal></entry>
<entry>曜日。3文字のテキスト形式。</entry>
<entry><literal>Mon</literal> から <literal>Sun</literal></entry>
</row>
<row>
<entry><literal>j</literal></entry>
<entry>日。先頭にゼロをつけない。</entry>
<entry><literal>1</literal> から <literal>31</literal></entry>
</row>
<row>
<entry><literal>l</literal> (小文字の 'L')</entry>
<entry>曜日。フルスペル形式。</entry>
<entry><literal>Sunday</literal> から <literal>Saturday</literal></entry>
</row>
<row>
<entry><literal>N</literal></entry>
<entry>ISO 8601 形式の、曜日の数値表現</entry>
<entry><literal>1</literal>(月曜日)から <literal>7</literal>(日曜日)</entry>
</row>
<row>
<entry><literal>S</literal></entry>
<entry>英語形式の序数を表すサフィックス。2 文字。</entry>
<entry>
<literal>st</literal>, <literal>nd</literal>, <literal>rd</literal>
または <literal>th</literal><literal>j</literal>と一緒に使用する
ことができる。
</entry>
</row>
<row>
<entry><literal>w</literal></entry>
<entry>曜日。数値。</entry>
<entry><literal>0</literal> (日曜)から <literal>6</literal> (土曜)</entry>
</row>
<row>
<entry><literal>z</literal></entry>
<entry>年間の通算日。数字。(ゼロから開始)</entry>
<entry><literal>0</literal> から <literal>365</literal></entry>
</row>
<row>
<entry align="center"><emphasis></emphasis></entry>
<entry>---</entry>
<entry>---</entry>
</row>
<row>
<entry><literal>W</literal></entry>
<entry>ISO 8601 月曜日に始まる年単位の週番号</entry>
<entry>例: <literal>42</literal> (年の第 42 週目)</entry>
</row>
<row>
<entry align="center"><emphasis></emphasis></entry>
<entry>---</entry>
<entry>---</entry>
</row>
<row>
<entry><literal>F</literal></entry>
<entry>月。フルスペルの文字。</entry>
<entry><literal>January</literal> から <literal>December</literal></entry>
</row>
<row>
<entry><literal>m</literal></entry>
<entry>月。数字。先頭にゼロをつける。</entry>
<entry><literal>01</literal> から <literal>12</literal></entry>
</row>
<row>
<entry><literal>M</literal></entry>
<entry>月。3 文字形式。</entry>
<entry><literal>Jan</literal> から <literal>Dec</literal></entry>
</row>
<row>
<entry><literal>n</literal></entry>
<entry>月。数字。先頭にゼロをつけない。</entry>
<entry><literal>1</literal> から <literal>12</literal></entry>
</row>
<row>
<entry><literal>t</literal></entry>
<entry>指定した月の日数。</entry>
<entry><literal>28</literal> から <literal>31</literal></entry>
</row>
<row>
<entry align="center"><emphasis></emphasis></entry>
<entry>---</entry>
<entry>---</entry>
</row>
<row>
<entry><literal>L</literal></entry>
<entry>閏年であるかどうか。</entry>
<entry><literal>1</literal>なら閏年。<literal>0</literal>なら閏年ではない。</entry>
</row>
<row>
<entry><literal>o</literal></entry>
<entry>ISO 8601 形式の週番号による年。これは
<literal>Y</literal> ほぼ同じだが、ISO 週番号
<literal>W</literal>)が前年あるいは翌年に属する場合はそちらの年を使うという点が異なる。</entry>
<entry>例: <literal>1999</literal> あるいは <literal>2003</literal></entry>
</row>
<row>
<entry><literal>X</literal></entry>
<entry>拡張された年の数値表現。少なくとも4桁からなる数値。紀元前の場合は、<literal>-</literal> が付きます。西暦の場合は <literal>+</literal> が付きます。</entry>
<entry>例: <literal>-0055</literal>, <literal>+0787</literal>,
<literal>+1999</literal>, <literal>+10191</literal></entry>
</row>
<row>
<entry><literal>x</literal></entry>
<entry>必要に応じて拡張された年の数値表現。
拡張する必要がない場合は、通常の年の数値 (<literal>Y</literal> と同じ)。
少なくとも4桁からなる数値。紀元前の場合は、<literal>-</literal> が付きます。<literal>10000</literal> (10000を含みます) を超える場合は、<literal>+</literal> が付きます。</entry>
<entry>例: <literal>-0055</literal>, <literal>0787</literal>,
<literal>1999</literal>, <literal>+10191</literal></entry>
</row>
<row>
<entry><literal>Y</literal></entry>
<entry>年。少なくとも4桁からなる数値。紀元前の場合は、<literal>-</literal> が付きます。</entry>
<entry>例: <literal>-0055</literal>, <literal>0787</literal>,
<literal>1999</literal>, <literal>2003</literal>, <literal>10191</literal></entry>
</row>
<row>
<entry><literal>y</literal></entry>
<entry>年。2 桁の数字。</entry>
<entry>例: <literal>99</literal> または <literal>03</literal></entry>
</row>
<row>
<entry align="center"><emphasis></emphasis></entry>
<entry>---</entry>
<entry>---</entry>
</row>
<row>
<entry><literal>a</literal></entry>
<entry>午前または午後(小文字)</entry>
<entry><literal>am</literal> または <literal>pm</literal></entry>
</row>
<row>
<entry><literal>A</literal></entry>
<entry>午前または午後(大文字)</entry>
<entry><literal>AM</literal> または <literal>PM</literal></entry>
</row>
<row>
<entry><literal>B</literal></entry>
<entry>Swatch インターネット時間</entry>
<entry><literal>000</literal> から <literal>999</literal></entry>
</row>
<row>
<entry><literal>g</literal></entry>
<entry>時。12時間単位。先頭にゼロを付けない。</entry>
<entry><literal>1</literal> から <literal>12</literal></entry>
</row>
<row>
<entry><literal>G</literal></entry>
<entry>時。24時間単位。先頭にゼロを付けない。</entry>
<entry><literal>0</literal> から <literal>23</literal></entry>
</row>
<row>
<entry><literal>h</literal></entry>
<entry>時。数字。12 時間単位。</entry>
<entry><literal>01</literal> から <literal>12</literal></entry>
</row>
<row>
<entry><literal>H</literal></entry>
<entry>時。数字。24 時間単位。</entry>
<entry><literal>00</literal> から <literal>23</literal></entry>
</row>
<row>
<entry><literal>i</literal></entry>
<entry>分。先頭にゼロをつける。</entry>
<entry><literal>00</literal> から <literal>59</literal></entry>
</row>
<row>
<entry><literal>s</literal></entry>
<entry>秒。先頭にゼロをつける。</entry>
<entry><literal>00</literal> から <literal>59</literal></entry>
</row>
<row>
<entry><literal>u</literal></entry>
<entry>
マイクロ秒。
<function>date</function> の場合、これは常に
<literal>000000</literal> となることに注意しましょう。というのも、
この関数が受け取るパラメータは <type>int</type> 型だからです。
一方 <interfacename>DateTimeInterface</interfacename> 型のオブジェクトをマイクロ秒つきで作成した場合は、
<methodname>DateTimeInterface::format</methodname> はマイクロ秒にも対応しています。
</entry>
<entry>例: <literal>654321</literal></entry>
</row>
<row>
<entry><literal>v</literal></entry>
<entry>
ミリ秒。
<literal>u</literal>と同じ注釈が当てはまります。
</entry>
<entry>例: <literal>654</literal></entry>
</row>
<row>
<entry align="center"><emphasis>タイムゾーン</emphasis></entry>
<entry>---</entry>
<entry>---</entry>
</row>
<row>
<entry><literal>e</literal></entry>
<entry>タイムゾーン識別子</entry>
<entry>例: <literal>UTC</literal>, <literal>GMT</literal>, <literal>Atlantic/Azores</literal></entry>
</row>
<row>
<entry><literal>I</literal> (大文字の i)</entry>
<entry>サマータイム中か否か</entry>
<entry><literal>1</literal>ならサマータイム中。 <literal>0</literal>ならそうではない。</entry>
</row>
<row>
<entry><literal>O</literal></entry>
<entry>グリニッジ標準時 (GMT)
との時差。時間と分の間にコロンは入りません。</entry>
<entry>例: <literal>+0200</literal></entry>
</row>
<row>
<entry><literal>P</literal></entry>
<entry>グリニッジ標準時 (GMT) との時差。時間と分をコロンで区切った形式</entry>
<entry>例: <literal>+02:00</literal></entry>
</row>
<row>
<entry><literal>p</literal></entry>
<entry>
<literal>P</literal> と同じですが、<literal>+00:00</literal> ではなく <literal>Z</literal> を返します。
(PHP 8.0.0 以降で利用可能)
</entry>
<entry>例: <literal>Z</literal> または <literal>+02:00</literal></entry>
</row>
<row>
<entry><literal>T</literal></entry>
<entry>既知のものについては、タイムゾーンの略称。そうでないものについては、GMT からのオフセット</entry>
<entry>例: <literal>EST</literal>, <literal>MDT</literal>, <literal>+05</literal></entry>
</row>
<row>
<entry><literal>Z</literal></entry>
<entry>タイムゾーンのオフセット秒数。
UTC の西側のタイムゾーン用のオフセットは常に負です。そして、
UTC の東側のオフセットは常に正です。</entry>
<entry><literal>-43200</literal> から <literal>50400</literal></entry>
</row>
<row>
<entry align="center"><emphasis>全ての日付/時刻</emphasis></entry>
<entry>---</entry>
<entry>---</entry>
</row>
<row>
<entry><literal>c</literal></entry>
<entry>ISO 8601 日付。拡張されていないフォーマット(9999年まで)とだけ、互換性があります。それより未来の日付は無効な文字列になります。そうした日付と拡張フォーマットについては、<literal>x</literal><literal>X</literal> を参照ください。</entry>
<entry>2004-02-12T15:19:21+00:00</entry>
</row>
<row>
<entry><literal>r</literal></entry>
<entry><link xlink:href="&url.rfc;2822">RFC 2822</link>/<link xlink:href="&url.rfc;5322">RFC 5322</link> 形式でフォーマットされた日付</entry>
<entry>例: <literal>Thu, 21 Dec 2000 16:01:07 +0200</literal></entry>
</row>
<row>
<entry><literal>U</literal></entry>
<entry>Unix Epoch (1970 年 1 月 1 日 0 時 0 分 0 秒) からの秒数</entry>
<entry><function>time</function> も参照</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<para>
フォーマット文字列中の認識されない文字は、そのまま表示されます。
<literal>Z</literal> 形式は、
<function>gmdate</function> で使用した場合、常に <literal>0</literal>
を返します。
</para>
<note>
<para>
この関数が受け付けるのは <type>int</type>
のタイムスタンプだけです。したがって、書式指定文字
<literal>u</literal> が有用となるのは
<function>date_create</function> で作成したタイムスタンプを用いて
<function>date_format</function> を使用した場合のみです。
</para>
</note>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
成功した場合にフォーマット済みの日付文字列を返します。
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.2.0</entry>
<entry>
フォーマット文字に
<literal>X</literal><literal>x</literal>
が追加されました。
</entry>
</row>
<row>
<entry>8.0.0</entry>
<entry>
フォーマット文字 <literal>p</literal> が追加されました。
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title><function>DateTimeInterface::format</function> の例</title>
<para>&style.oop;</para>
<programlisting role="php">
<![CDATA[
<?php
$date = new DateTimeImmutable('2000-01-01');
echo $date->format('Y-m-d H:i:s');
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
2000-01-01 00:00:00
]]>
</screen>
<para>&style.procedural;</para>
<programlisting role="php">
<![CDATA[
<?php
$date = date_create('2000-01-01');
echo date_format($date, 'Y-m-d H:i:s');
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
2000-01-01 00:00:00
]]>
</screen>
</example>
</para>
<para>
<example>
<title>例をもう少し</title>
<programlisting role="php">
<![CDATA[
<?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";
?>
]]>
</programlisting>
</example>
</para>
<para>
フォーマット文字列の中で既知の文字が展開されることを防ぐために、
バックスラッシュでエスケープすることができます。
バックスラッシュ付きの文字が既に特殊な意味を持つ場合は、
バックスラッシュもエスケープする必要があるでしょう。
<example>
<title>フォーマット中に文字をエスケープする</title>
<programlisting role="php">
<![CDATA[
<?php
$date = new DateTimeImmutable();
// prints something like: Wednesday the 19th
echo $date->format('l \t\h\e jS');
?>
]]>
</programlisting>
</example>
</para>
<para>
他の言語で日付をフォーマットするには、
<methodname>DateTimeInterface::format</methodname>
ではなく
<methodname>IntlDateFormatter::format</methodname>
を使います。
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<para>
このメソッドはロケールを考慮しません。出力結果はすべて英語となります。
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<simplelist>
<member><methodname>IntlDateFormatter::format</methodname></member>
</simplelist>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->