PHP Conference Nagoya 2025

IntlCalendar::fieldDifference

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::fieldDifferenceCalcular la diferencia entre el instante dado y el de este objeto

Descripción

Estilo orientado a objetos

public IntlCalendar::fieldDifference(float $when, int $field): int

Estilo por procedimientos

intlcal_field_difference(IntlCalendar $cal, float $when, int $field): int

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.

Parámetros

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.

Valores devueltos

Devuelve una diferencia de tiempo (con signo) en la unidad asociada al campo especificado o false en caso de error.

Ejemplos

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

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top