CakeFest 2024: The Official CakePHP Conference

IntlCalendar::fieldDifference

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

IntlCalendar::fieldDifferenceВычисляет разницу между заданным временем и временем объекта

Описание

Объектно-ориентированный стиль

public IntlCalendar::fieldDifference(float $timestamp, int $field): int|false

Процедурный стиль

intlcal_field_difference(IntlCalendar $calendar, float $timestamp, int $field): int|false

Возвращает разницу между заданным временем и временем, установленным для объекта, относительно количества, указанного в параметре 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

add a note

User Contributed Notes

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