DateInterval::format

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

DateInterval::formatFormatea el intervalo

Descripción

public DateInterval::format(string $format): string

Formatea el intervalo.

Parámetros

format

Los siguietes caracteres están reconocidos en el parámetro de cadena format. Cada carácter de formato debe ser prefijado con un signo de porcentaje (%).
Carácter format Descripción Valores de ejemplo
% Literal % %
Y Años, numérico, al menos 2 dígitos empezando con 0 01, 03
y Años, numérico 1, 3
M Meses, numérico, al menos 2 dígitos empezando con 0 01, 03, 12
m Meses, numérico 1, 3, 12
D Días, numérico, al menos 2 dígitos empezando con 0 01, 03, 31
d Días, numérico 1, 3, 31
a Número total de días como resultado de una operación con DateTime::diff(), o de lo contrario (unknown) 4, 18, 8123
H Horas, numérico, al menos 2 dígitos empezando con 0 01, 03, 23
h Horas, numérico 1, 3, 23
I Minutos, numérico, al menos 2 dígitos empezando con 0 01, 03, 59
i Minutos, numérico 1, 3, 59
S Segundos, numérico, al menos 2 dígitos empezando con 0 01, 03, 57
s Segundos, numérico 1, 3, 57
R Signo "-" cuando es negativo, "+" cuando es positivo -, +
r Signo "-" cuando es negativo, vacío cuando es positivo -,

Valores devueltos

Devuelve el intervalo formateado.

Notas

Nota:

El método DateInterval::format() no recalcula los excesos en cadenas de hora ni en segmentos de fecha. Esto es así porque no es posible analizar valores como "32 días" el cual podría ser interpretado como cualquier cosa desde "1 mes y 4 días" hasta "1 mes y un día".

Ejemplos

Ejemplo #1 Ejemplo de DateInterval

<?php

$intervalo 
= new DateInterval('P2Y4DT6H8M');
echo 
$intervalo->format('%d días');

?>

El resultado del ejemplo sería:

4 días

Ejemplo #2 DateInterval y excesos

<?php
 
$intervalo 
= new DateInterval('P32D');
echo 
$intervalo->format('%d días');

?>

El resultado del ejemplo sería:

32 días

Ejemplo #3 DateInterval y DateTime::diff() con los modificadores %a y %d

<?php

$enero 
= new DateTime('2010-01-01');
$febrero = new DateTime('2010-02-01');
$intervalo $febrero->diff($enero);

// %a imprimirá el múmero total de días.
echo $intervalo->format('%a total de días')."\n";

// Mientras que %d sólo imprimirá el múmero total de días no cubiertos por el
// mes.
echo $intervalo->format('%m mes, %d días');

?>

El resultado del ejemplo sería:

31 total days
1 month, 0 days

Ver también