IntlCalendar::getSkippedWallTimeOption

スキップされた実時間を扱う際の振る舞いを取得する

説明

オブジェクト指向型

public int IntlCalendar::getSkippedWallTimeOption()

手続き型

int intlcal_get_skipped_wall_time_option(IntlCalendar $calendar)

夏時間が始まった際に時間を進めた場合に、 スキップされる実時間をどう扱うかの戦略を取得します。 デフォルト値は IntlCalendar::WALLTIME_LAST です。

このオプションを有効にするには、 カレンダーの 緩いモード がONになっている必要があります。 そうでない場合、存在しない時刻を設定しようとしてエラーが発生します。

この関数を使うには、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);

//On March 31st at 0100, the clock goes forward 1 hour and from GMT+00 to 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"

参考

  • IntlCalendar::getRepeatedWallTimeOption
  • IntlCalendar::setSkippedWallTimeOption
  • IntlCalendar::setRepeatedWallTimeOption