(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)
IntlDateFormatter::format -- datefmt_format — Форматирует значение даты и времени как строку
Объектно-ориентированный стиль
$datetime
): string|falseПроцедурный стиль
$formatter
, IntlCalendar|DateTimeInterface|array|string|int|float $datetime
): string|falseМетод форматирует значение даты и времени в виде строки.
formatter
Источник средства форматирования даты.
datetime
Значение, которое требуется отформатировать. Параметр принимает объекты интерфейса DateTimeInterface, объект IntlCalendar, значения с типом numeric, который представляет (возможно, дробное) количество секунд с начала эпохи Unix, или массив (array) в формате, который возвращает функция localtime().
Метод не учитывает часовой пояс объектов DateTime и IntlCalendar. Метод отформатирует объект с часовым поясом, который настроили в средстве форматирования. На средстве форматирования вначале вызывают метод IntlDateFormatter::setTimeZone() с часовым поясом объекта форматирования, когда требуется отформатировать объект с часовым поясом, который установили для объекта форматирования. Как альтернативу этому вызывают статический метод IntlDateFormatter::formatObject().
Метод возвращает строку, которую сформировал при форматировании, или false
, если возникла ошибка.
Версия | Описание |
---|---|
7.1.5 |
Теперь параметр datetime поддерживает
общие объекты DateTimeInterface.
Раньше поддерживались только объекты DateTime.
|
PECL-модуль intl 3.0.0 |
Теперь параметр datetime
поддерживает объекты IntlCalendar.
|
Пример #1 Пример форматирования значения даты и времени в виде строки функцией datefmt_format()
<?php
$fmt = datefmt_create(
'en_US',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'America/Los_Angeles',
IntlDateFormatter::GREGORIAN
);
echo 'Первый форматированный вывод: ' . datefmt_format($fmt, 0);
$fmt = datefmt_create(
'de-DE',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'America/Los_Angeles',
IntlDateFormatter::GREGORIAN
);
echo 'Второй форматированный вывод: ' . datefmt_format($fmt, 0);
$fmt = datefmt_create(
'en_US',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'America/Los_Angeles',
IntlDateFormatter::GREGORIAN,
'MM/dd/yyyy'
);
echo 'Первый форматированный вывод с шаблоном: ' . datefmt_format($fmt, 0);
$fmt = datefmt_create(
'de-DE',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'America/Los_Angeles',
IntlDateFormatter::GREGORIAN,
'MM/dd/yyyy'
);
echo "Второй форматированный вывод с шаблоном: " . datefmt_format($fmt, 0);
?>
Пример #2 Пример форматирования в объектно-ориентированном стиле
<?php
$fmt = new IntlDateFormatter(
'en_US',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'America/Los_Angeles',
IntlDateFormatter::GREGORIAN
);
echo 'Первый форматированный вывод: ' . $fmt->format(0);
$fmt = new IntlDateFormatter(
'de-DE',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'America/Los_Angeles',
IntlDateFormatter::GREGORIAN
);
echo 'Второй форматированный вывод: ' . $fmt->format(0);
$fmt = new IntlDateFormatter(
'en_US',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'America/Los_Angeles',
IntlDateFormatter::GREGORIAN,
'MM/dd/yyyy'
);
echo 'Первый форматированный вывод с шаблоном: ' . $fmt->format(0);
$fmt = new IntlDateFormatter(
'de-DE',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'America/Los_Angeles',
IntlDateFormatter::GREGORIAN,
'MM/dd/yyyy'
);
echo 'Второй форматированный вывод с шаблоном: ' . $fmt->format(0);
?>
Результат выполнения приведённого примера:
Первый форматированный вывод: Wednesday, December 31, 1969 4:00:00 PM PT Второй форматированный вывод: Mittwoch, 31. Dezember 1969 16:00 Uhr GMT-08:00 Первый форматированный вывод с шаблоном: 12/31/1969 Второй форматированный вывод с шаблоном: 12/31/1969
Пример #3 Пример форматирования с объектом IntlCalendar
<?php
$tz = reset(iterator_to_array(IntlTimeZone::createEnumeration('FR')));
$formatter = IntlDateFormatter::create(
'fr_FR',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
$tz,
IntlDateFormatter::GREGORIAN
);
$cal = IntlCalendar::createInstance($tz, '@calendar=islamic-civil');
$cal->set(IntlCalendar::FIELD_MONTH, 8); // 9-й месяц, Рамадан
$cal->set(IntlCalendar::FIELD_DAY_OF_MONTH, 1); // Первый день
$cal->clear(IntlCalendar::FIELD_HOUR_OF_DAY);
$cal->clear(IntlCalendar::FIELD_MINUTE);
$cal->clear(IntlCalendar::FIELD_SECOND);
$cal->clear(IntlCalendar::FIELD_MILLISECOND);
echo "В этом исламском году Рамадан начался или начнётся:\n\t",
$formatter->format($cal), "\n";
// Это часовой пояс средства форматирования:
$formatter->setTimeZone('Asia/Tokyo');
echo "После изменения часового пояса:\n\t",
$formatter->format($cal), "\n"
;
?>
Результат выполнения приведённого примера:
В этом исламском году Рамадан начался/начнётся: mardi 9 juillet 2013 19:00:00 heure avancée d’Europe centrale После изменения часового пояса: mercredi 10 juillet 2013 02:00:00 heure normale du Japon