(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)
IntlCalendar::fieldDifference — Calcular la diferencia entre el instante dado y el de este objeto
Estilo orientado a objetos
Estilo por procedimientos
Devuelve la diferencia entre el instante dado y el instante al que está establecido
este objeto, con respecto a la cantidad especificada por el parámetro
field
.
Se pretende que este método se llamado sucesivamente, primero con el campo de interés más significativo hasta el menos significativo. Para es propósito, y como efecto segundario, el valor del calendario para el campo especificado avanza la cantidad devuelta.
cal
El recurso IntlCalendar.
when
El instante con el que comparar la cantidad representada por
field
. Para que el resultado sea positivo, el instante
dado a este parámetro debe estar por delante del instante del objeto
que invocó al método.
field
El campo que representa la cantidad a comparar.
Una de las constantes del campo
fecha/hora de IntlCalendar. Son valores de tipo
integer entre 0
y
IntlCalendar::FIELD_COUNT
.
Devuelve una diferencia de tiempo (con signo) en la unidad asociada al
campo especificado o false
en caso de error.
Ejemplo #1 IntlCalendar::fieldDifference()
<?php
ini_set('date.timezone', 'Europe/Lisbon');
ini_set('intl.default_locale', 'fr_FR');
$cal1 = IntlCalendar::fromDateTime('2012-02-29 09:00:11');
$cal2 = IntlCalendar::fromDateTime('2013-03-01 09:19:29');
$time = $cal2->getTime();
echo "Instante antes: ", IntlDateFormatter::formatObject($cal1), "\n";
printf(
"La diferencia es %d year(s), %d month(s), "
. "%d day(s), %d hour(s) and %d minute(s)\n",
$cal1->fieldDifference($time, IntlCalendar::FIELD_YEAR),
$cal1->fieldDifference($time, IntlCalendar::FIELD_MONTH),
$cal1->fieldDifference($time, IntlCalendar::FIELD_DAY_OF_MONTH),
$cal1->fieldDifference($time, IntlCalendar::FIELD_HOUR_OF_DAY),
$cal1->fieldDifference($time, IntlCalendar::FIELD_MINUTE)
);
// ahora avanzó el instante objetivo, con excepción de los segundos,
// para el cual no medimos la diferencia
echo "Instante después: ", IntlDateFormatter::formatObject($cal1), "\n";
El resultado del ejemplo sería:
Instante antes: 29 févr. 2012 09:00:11 La diferencia es 1 year(s), 0 month(s), 1 day(s), 0 hour(s) and 19 minute(s) Instante después: 1 mars 2013 09:19:11