DateInterval::format

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

DateInterval::formatФорматирует интервал

Описание

publicDateInterval::format(string$format): string

Форматирует интервал.

Список параметров

format

В строке format распознаются следующие символы. Каждому такому символу должен предшествовать знак процента (%).
Символ в строкеformatОписаниеПример значения
%Символ %%
YГоды, число, минимум две цифры с ведущими нулями01, 03
yГоды, число1, 3
MМесяцы, число, минимум две цифры с ведущими нулями01, 03, 12
mМесяцы, число1, 3, 12
DДни, число, минимум две цифры с ведущими нулями01, 03, 31
dДни, число1, 3, 31
aОбщее количество дней в качестве результата выполнения DateTime::diff(), либо unknown4, 18, 8123
HЧасы, число, минимум две цифры с ведущими нулями01, 03, 23
hЧасы, число1, 3, 23
IМинуты, число, минимум две цифры с ведущими нулями01, 03, 59
iМинуты, число1, 3, 59
SСекунды, число, минимум две цифры с ведущими нулями01, 03, 57
sСекунды, число1, 3, 57
FМикросекунды, число, как минимум 6 цифр с ведущим 0007701, 052738, 428291
fМикросекунды, число7701, 52738, 428291
RЗнак "-" при отрицательном числе, "+" при положительном-, +
rЗнак "-" при отрицательном числе, пусто при положительном-,

Возвращаемые значения

Возвращает отформатированный интервал.

Список изменений

ВерсияОписание
7.2.12 Формат F и f теперь всегда будет положительным.
7.1.0Добавлены форматирующие символы F и f.

Примеры

Пример #1 Пример использования DateInterval

<?php

$interval
= new DateInterval('P2Y4DT6H8M');
echo
$interval->format('%d days');

?>

Результат выполнения приведённого примера:

4 days

Пример #2 DateInterval и перенос единиц

<?php

$interval
= new DateInterval('P32D');
echo
$interval->format('%d days');

?>

Результат выполнения приведённого примера:

32 days

Пример #3 DateInterval и DateTime::diff() с модификаторами %a и %d

<?php

$january
= new DateTime('2010-01-01');
$february = new DateTime('2010-02-01');
$interval = $february->diff($january);

// %a выведет общее количество дней.
echo $interval->format('%a total days')."\n";

// В то время как %d выведет только число дней, не покрытых месяцем
echo $interval->format('%m month, %d days');

?>

Результат выполнения приведённого примера:

31 total days 1 month, 0 days

Примечания

Замечание:

Метод DateInterval::format() не делает пересчёта и переноса единиц времени при переполнении значений дат. Это ожидаемое поведение, поскольку невозможно реализовать перенос при значениях, например, "32 дня", которые могут интерпретироваться по-разному, начиная "1 месяц и 4 дня" и заканчивая "1 месяц и 1 день".

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

  • DateTime::diff() - Возвращает разницу между двумя объектами DateTime
To Top