(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)
IntlCalendar::getSkippedWallTimeOption — 获取处理跳过的墙上时间的行为
面向对象风格
过程化风格
获取当前处理在夏令时开始转换期间时钟向前拨动时跳过的墙上时间的策略。默认值为IntlCalendar::WALLTIME_LAST
。
为了使此选项生效,日历必须是宽松的,否则尝试设置不存在的时间将导致错误。
此函数需要ICU 4.9或更高版本。
calendar
一个IntlCalendar 实例。
IntlCalendar::WALLTIME_FIRST
、IntlCalendar::WALLTIME_LAST
或IntlCalendar::WALLTIME_NEXT_VALID
之一的常量。
示例 #1 IntlCalendar::getSkippedWallTimeOption()
<?php
ini_set('date.timezone', 'Europe/Lisbon');
ini_set('intl.default_locale', 'en_US');
ini_set('intl.error_level', E_WARNING);
//3月31日凌晨1点,时间向前拨动1小时,从GMT+00到GMT+01
$cal = new IntlGregorianCalendar(2013, 2 /* March */, 31, 1, 30);
var_dump(
$cal->isLenient(), // true
$cal->getSkippedWalltimeOption() // 0 WALLTIME_LAST
);
$formatter = IntlDateFormatter::create(
NULL,
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'UTC'
);
var_dump($formatter->format($cal->getTime() / 1000));
$cal->setSkippedWallTimeOption(IntlCalendar::WALLTIME_FIRST);
var_dump($cal->getSkippedWalltimeOption()); // 1 WALLTIME_FIRST
$cal->set(IntlCalendar::FIELD_HOUR_OF_DAY, 1);
var_dump($formatter->format($cal->getTime() / 1000));
$cal->setSkippedWallTimeOption(IntlCalendar::WALLTIME_NEXT_VALID);
var_dump($cal->getSkippedWalltimeOption()); // 2 WALLTIME_NEXT_VALID
$cal->set(IntlCalendar::FIELD_HOUR_OF_DAY, 1);
var_dump($formatter->format($cal->getTime() / 1000));
以上示例将输出
bool(true) int(0) string(40) "Sunday, March 31, 2013 at 1:30:00 AM GMT" int(1) string(41) "Sunday, March 31, 2013 at 12:30:00 AM GMT" int(2) string(40) "Sunday, March 31, 2013 at 1:00:00 AM GMT"