(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";
上面的示例将输出
Time before: 29 févr. 2012 09:00:11 The difference in time is 1 year(s), 0 month(s), 1 day(s), 0 hour(s) and 19 minute(s) Time after: 1 mars 2013 09:19:11