PHP Conference Nagoya 2025

DateInterval::format

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

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

Описание

public DateInterval::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(), либо unknown 4, 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 цифр с ведущим 0 007701, 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

Добавить

Примечания пользователей 1 note

up
1
online dot cloudmeetings dot marco at gmail dot com
5 months ago
Pls note these important abbreviations;

P: period
Y: years
M: months
D: days
T: time
H: hours
M: minutes
S: seconds

The above is from the ISO 8601 - an international standard that defines how to use, store, and transfer date, time, and duration information.
To Top