(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 "Time before: ", 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 "Time after: ", 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