(PHP 8 >= 8.6.0)
Time\Duration::compare — Compara dos duraciones
Compara las duraciones a y
b, teniendo en cuenta sus signos.
El valor devuelto es adecuado como resultado de una retrollamada para
usort().
Los operadores de comparación utilizan el mismo orden cuando ambos operandos son objetos Time\Duration.
aLa primera duración.
bLa segunda duración.
Devuelve un valor menor que 0 si
a es más corta que b, un valor
mayor que 0 si a es más larga
que b, y 0 si ambas duraciones
son iguales.
No se puede inferir de forma fiable ningún significado particular del valor,
salvo su signo.
Las duraciones negativas siempre son menores que las positivas.
Ejemplo #1 Ejemplo de Time\Duration::compare()
<?php
$oneSecond = \Time\Duration::fromSeconds(1);
$oneAndAHalfSeconds = \Time\Duration::fromMilliseconds(1500);
$billionNanoseconds = \Time\Duration::fromNanoseconds(1_000_000_000);
var_dump(\Time\Duration::compare($oneSecond, $oneAndAHalfSeconds) < 0);
var_dump(\Time\Duration::compare($oneAndAHalfSeconds, $oneSecond) > 0);
var_dump(\Time\Duration::compare($oneSecond, $billionNanoseconds) === 0);
// Las duraciones negativas son menores que las positivas.
var_dump(\Time\Duration::compare($oneSecond->negate(), $oneSecond) < 0);El ejemplo anterior mostrará:
bool(true) bool(true) bool(true) bool(true)
Ejemplo #2 Ordenación de duraciones con Time\Duration::compare()
<?php
$durations = [
\Time\Duration::fromMinutes(2),
\Time\Duration::fromMilliseconds(250),
\Time\Duration::fromSeconds(5),
];
usort($durations, \Time\Duration::compare(...));
foreach ($durations as $duration) {
printf("%d.%09d\n", $duration->seconds, $duration->nanoseconds);
}El ejemplo anterior mostrará:
0.250000000 5.000000000 120.000000000