(PHP 5 >= 5.3.0, PHP 7)
DateInterval::format — Formatea el intervalo
$format
)Formatea el intervalo.
format
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 | -, |
Devuelve el intervalo formateado.
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".
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