IntlDateFormatter::format

datefmt_format

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

IntlDateFormatter::format -- datefmt_formatФорматирует значение даты и времени как строку

Описание

Объектно-ориентированный стиль

public IntlDateFormatter::format(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

Смотрите также