ISO-9889:1999 に反して、Sun Solaris は日曜日を 1 としています。
そのため、%u はこのマニュアルの説明どおりに機能しないかもしれません。
Windows 限定:
Windows 上では %e に対応していません。
この値が欲しければ、代わりに %#d を使いましょう。
クロスプラットフォーム対応の関数を書く方法をこの後の例で示します。
%z と %Z
は、どちらもタイムゾーン名を返します。オフセットや略称は返しません。
macOS と musl 限定:%P 修飾子は
macOS 版の実装ではサポートされていません。
&date.timestamp.description;
&reftitle.returnvalues;
指定した timestamp または timestamp
が指定されていない場合に現在のローカル時間を用いて、
指定したフォーマット文字列に基づき文字列をフォーマットして返します。
月および曜日の名前、およびその他の言語依存の文字列は、
setlocale で設定された現在のロケールを尊重して表示されます。
この関数は、format が空だったり、
サポートされていない変換指定子が含まれていたり、
返される文字列の長さが 4095 より大きい場合は、&false; を返します。
&reftitle.errors;
&date.timezone.errors.description;
出力内容は元となった C ライブラリに依存するため、サポートしていない変換指定子もあります。
Windows では、対応していない変換指定子を渡すと
5 つの E_WARNING メッセージが出て &false; を返します。
その他のオペレーティングシステムでは特に
E_WARNING メッセージは出ず、
変換指定子が (変換されずに) そのまま出力されます。
&reftitle.changelog;
&Version;&Description;8.0.0timestamp は、nullable になりました。
&reftitle.examples;
この例は、それぞれのロケールがシステムにインストールされている場合にのみ動作します。
strftime のロケールの例
]]>
ISO 8601:1988 の週番号の例
]]>
%e 修飾子を使う、クロスプラットフォーム対応の例
]]>
すべての書式の表示
'A full textual representation of the day',
'B' => 'Full month name, based on the locale',
'C' => 'Two digit representation of the century (year divided by 100, truncated to an integer)',
'D' => 'Same as "%m/%d/%y"',
'E' => '',
'F' => 'Same as "%Y-%m-%d"',
'G' => 'The full four-digit version of %g',
'H' => 'Two digit representation of the hour in 24-hour format',
'I' => 'Two digit representation of the hour in 12-hour format',
'J' => '',
'K' => '',
'L' => '',
'M' => 'Two digit representation of the minute',
'N' => '',
'O' => '',
'P' => 'lower-case "am" or "pm" based on the given time',
'Q' => '',
'R' => 'Same as "%H:%M"',
'S' => 'Two digit representation of the second',
'T' => 'Same as "%H:%M:%S"',
'U' => 'Week number of the given year, starting with the first Sunday as the first week',
'V' => 'ISO-8601:1988 week number of the given year, starting with the first week of the year with at least 4 weekdays, with Monday being the start of the week',
'W' => 'A numeric representation of the week of the year, starting with the first Monday as the first week',
'X' => 'Preferred time representation based on locale, without the date',
'Y' => 'Four digit representation for the year',
'Z' => 'The time zone offset/abbreviation option NOT given by %z (depends on operating system)',
'a' => 'An abbreviated textual representation of the day',
'b' => 'Abbreviated month name, based on the locale',
'c' => 'Preferred date and time stamp based on local',
'd' => 'Two-digit day of the month (with leading zeros)',
'e' => 'Day of the month, with a space preceding single digits',
'f' => '',
'g' => 'Two digit representation of the year going by ISO-8601:1988 standards (see %V)',
'h' => 'Abbreviated month name, based on the locale (an alias of %b)',
'i' => '',
'j' => 'Day of the year, 3 digits with leading zeros',
'k' => 'Hour in 24-hour format, with a space preceding single digits',
'l' => 'Hour in 12-hour format, with a space preceding single digits',
'm' => 'Two digit representation of the month',
'n' => 'A newline character ("\n")',
'o' => '',
'p' => 'UPPER-CASE "AM" or "PM" based on the given time',
'q' => '',
'r' => 'Same as "%I:%M:%S %p"',
's' => 'Unix Epoch Time timestamp',
't' => 'A Tab character ("\t")',
'u' => 'ISO-8601 numeric representation of the day of the week',
'v' => '',
'w' => 'Numeric representation of the day of the week',
'x' => 'Preferred date representation based on locale, without the time',
'y' => 'Two digit representation of the year',
'z' => 'Either the time zone offset from UTC or the abbreviation (depends on operating system)',
'%' => 'A literal percentage character ("%")',
);
// 結果
$strftimeValues = array();
// 書式を評価してエラーを抑制します
foreach ($strftimeFormats as $format => $description) {
if (false !== ($value = @strftime("%{$format}"))) {
$strftimeValues[$format] = $value;
}
}
// 最長の値を探します
$maxValueLength = 2 + max(array_map('strlen', $strftimeValues));
// 既知の書式を表示します
foreach ($strftimeValues as $format => $value) {
echo "Known format : '{$format}' = ", str_pad("'{$value}'", $maxValueLength), " ( {$strftimeFormats[$format]} )\n";
}
// 未知の書式を表示します
foreach (array_diff_key($strftimeFormats, $strftimeValues) as $format => $description) {
echo "Unknown format : '{$format}' ", str_pad(' ', $maxValueLength), ($description ? " ( {$description} )" : ''), "\n";
}
?>
]]>
&example.outputs.similar;
&reftitle.notes;
ISO 8601:1988 week numbers に基づいている %G と %V は、
もしナンバリングシステムが完全に理解されていなければ
期待とは違う結果をもたらします。
このマニュアルの %V の例を参照ください。
&reftitle.seealso;
IntlDateFormatter::formatDateTimeInterface::formatオンラインの strftime() 書式デザインツールsetlocalemktimestrptimegmstrftimeOpen Group による strftime の定義