(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)
IntlCalendar::fieldDifference — Вычисляет разницу между заданным временем и временем объекта
Объектно-ориентированный стиль
Процедурный стиль
Возвращает разницу между заданным временем и временем, установленным для объекта,
относительно количества, указанного в параметре field
.
Метод предназначен для последовательного вызова, сначала от наиболее значимой областью интересов до наименее значимой области. В качестве побочного эффекта, значение календаря для указанного поля увеличивается на возвращённую сумму.
calendar
Экземпляр класса IntlCalendar.
timestamp
Время, с которым сравнивается количество, представленное field
.
Чтобы результат был положительным, время, указанное в этом параметре,
должно опережать время объекта, для которого вызывается метод.
field
Поле, представляющее сравниваемое количество.
Одна из представленных в классе IntlCalendar констант полей типа дата/время. Целое число
от 0
до
IntlCalendar::FIELD_COUNT
.
Возвращает разность времени (со знаком) в единицах измерения,
связанных с указанным полем или false
, если возникла ошибка.
Пример #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 "Время до: ", IntlDateFormatter::formatObject($cal1), "\n";
printf(
"Разница во времени: %d год(лет), %d месяц(ев), "
. "%d день(дней), %d час(ов) и %d минуту(минут)\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)
);
// теперь оно было продвинуто к целевому времени, за исключением секунд,
// для которых мы не измеряли разницу
echo "Время после: ", IntlDateFormatter::formatObject($cal1), "\n";
Результат выполнения приведённого примера:
Время до: 29 févr. 2012 09:00:11 Разница во времени: 1 год(лет), 0 месяц(ев), 1 день(дней), 0 час(ов) and 19 минуту(минут) Время после: 1 mars 2013 09:19:11