函数名:IntlCalendar::setSkippedWallTimeOption()
适用版本:PHP 5 >= 5.5.0, PHP 7, PHP 8
函数说明:该函数用于设置在跳过夏令时时要采取的操作选项。
用法:
bool IntlCalendar::setSkippedWallTimeOption(int $wallTimeOption)
参数:
- $wallTimeOption:指定夏令时跳过时的操作选项。可选值有:
- IntlCalendar::WALLTIME_LAST:使用最后一次有效时间。如果夏令时结束时有重复的时间点,则选择最后一个时间点。
- IntlCalendar::WALLTIME_FIRST:使用第一次有效时间。如果夏令时结束时有重复的时间点,则选择第一个时间点。
- IntlCalendar::WALLTIME_NEXT_VALID:使用下一个有效时间。如果夏令时结束时有重复的时间点,则选择下一个时间点。默认选项。
返回值:
- 成功时返回 TRUE,失败时返回 FALSE。
示例:
$calendar = IntlCalendar::createInstance();
$calendar->setSkippedWallTimeOption(IntlCalendar::WALLTIME_LAST);
// 设置夏令时跳过选项为使用最后一次有效时间
$timestamp = strtotime("2021-03-14 02:30:00");
$calendar->setTime($timestamp);
echo $calendar->get(IntlCalendar::FIELD_HOUR_OF_DAY); // 输出 3
在上面的示例中,我们创建了一个IntlCalendar实例,并将setSkippedWallTimeOption()函数的参数设置为IntlCalendar::WALLTIME_LAST。然后,我们设置了一个时间戳为2021年3月14日2:30:00,并使用setTime()函数将IntlCalendar实例的时间设置为该时间戳。最后,我们使用get()函数获取当前时间的小时,并输出结果为3。这是因为在夏令时开始时,时间跳过了2:00-3:00之间的时间,所以实际上的时间是3:30:00。通过设置setSkippedWallTimeOption()函数的参数为IntlCalendar::WALLTIME_LAST,我们选择了夏令时结束时的最后一个时间点,即3:00:00。