IntlDateFormatter::parse
IntlDateFormatter::setLenient
IntlDateFormatter
PHP Manual

# IntlDateFormatter::setCalendar

# datefmt_set_calendar

(PHP 5 >= 5.3.0, PECL intl >= 1.0.0)

IntlDateFormatter::setCalendar -- datefmt_set_calendar — Formatter が使うカレンダー型を設定する

### 説明

オブジェクト指向型

bool IntlDateFormatter::setCalendar ( mixed `$which` )

手続き型

bool datefmt_set_calendar ( IntlDateFormatter `$fmt` , mixed `$which` )

このフォーマッターが使用するカレンダーあるいはカレンダー型を設定します。

### パラメータ

`fmt`

  フォーマッターリソース。

`which`

  使用する カレンダー型 (デフォルトは `IntlDateFormatter::GREGORIAN` で、 `NULL` を指定した場合にもこれを使います)、あるいは IntlCalendar オブジェクト。

  IntlCalendar オブジェクトが渡された場合は、それをクローンします。 引数として渡したオブジェクトは、何も変更されません。

  フォーマッターのタイムゾーンを残すのは IntlCalendar オブジェクトが渡されなかった場合だけで、 このオブジェクトが渡された場合は新しいタイムゾーンを利用します。

### 返り値

成功した場合に `TRUE` を、失敗した場合に `FALSE` を返します。

### 変更履歴

バージョン | 説明
--- | ---
5.5.0/PECL 3.0.0 | IntlCalendar オブジェクトを渡せるようになりました。

### 例

例1 datefmt_set_calendar() の例

`<?php
$fmt = datefmt_create(
'en_US',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'America/Los_Angeles',
IntlDateFormatter::GREGORIAN
);
echo 'calendar of the formatter is : ' . datefmt_get_calendar($fmt);
datefmt_set_calendar($fmt, IntlDateFormatter::TRADITIONAL);
echo 'Now calendar of the formatter is : ' . datefmt_get_calendar($fmt);
?>`

例2 オブジェクト指向の例

`<?php
$fmt = new IntlDateFormatter(
'en_US',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'America/Los_Angeles',
IntlDateFormatter::GREGORIAN
);
echo 'calendar of the formatter is : ' . $fmt->getCalendar();
$fmt->setCalendar(IntlDateFormatter::TRADITIONAL);
echo 'Now calendar of the formatter is : ' . $fmt->getCalendar();
?>`

上の例の出力は以下となります。

    calendar of the formatter is : 1
    Now calendar of the formatter is : 0

例3 引数に IntlCalendar を使う例

`<?php
$time = strtotime("2013-03-03 00:00:00 UTC");
$formatter = IntlDateFormatter::create("en_US", NULL, NULL, "Europe/Amsterdam");
echo "before: ", $formatter->format($time), "\n";
/* カレンダーのロケールは使われないことに注目 */
$formatter->setCalendar(IntlCalendar::createInstance(
"America/New_York", "pt_PT@calendar=islamic"));
echo "after: ", $formatter->format($time), "\n";`

上の例の出力は以下となります。

    before: Sunday, March 3, 2013 at 1:00:00 AM Central European Standard Time
    after:  Saturday, Rabiʻ II 20, 1434 at 7:00:00 PM Eastern Standard Time

### 参考

- datefmt_get_calendar() - IntlDateFormatter が使用するカレンダー型を取得する
- datefmt_get_calendar_object() - カレンダーオブジェクトのコピーを取得する
- datefmt_create() - Date Formatter を作成する

IntlDateFormatter::parse
IntlDateFormatter::setLenient
IntlDateFormatter
PHP Manual