Date Formatter を作成する

# IntlDateFormatter::create

# datefmt_create

# IntlDateFormatter::__construct

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

IntlDateFormatter::create -- datefmt_create -- IntlDateFormatter::__construct — Date Formatter を作成する

### 説明

オブジェクト指向型

public static IntlDateFormatter::create ( string `$locale` , int `$datetype` , int `$timetype` [, mixed `$timezone` = NULL [, mixed `$calendar` = NULL [, string `$pattern` = "" ]]] ) : IntlDateFormatter

オブジェクト指向型 (コンストラクタ)

public IntlDateFormatter::__construct ( string `$locale` , int `$datetype` , int `$timetype` [, mixed `$timezone` = NULL [, mixed `$calendar` = NULL [, string `$pattern` = "" ]]] )

手続き型

datefmt_create ( string `$locale` , int `$datetype` , int `$timetype` [, mixed `$timezone` = NULL [, mixed `$calendar` = NULL [, string `$pattern` = "" ]]] ) : IntlDateFormatter

Date Formatter を作成します。

### パラメータ

`locale`

  フォーマットやパースの際に使用するロケール。`NULL` を指定すると、 ini 設定 intl.default_locale の値を使います。

`datetype`

  使用する日付の形式 (`none`, `short`, `medium`, `long`, `full`)。 IntlDateFormatter の定数 のいずれかとなります。 `NULL` を指定すると、ICU のデフォルトの日付型を使います。

`timetype`

  使用する時刻の形式 (`none`, `short`, `medium`, `long`, `full`)。 IntlDateFormatter の定数 のいずれかとなります。 `NULL` を指定すると、ICU のデフォルトの時刻型を使います。

`timezone`

  タイムゾーン ID。デフォルト (そして、`NULL` が渡されたときにも使われるもの) は date_default_timezone_get() が返す ID、あるいは `calendar` パラメータに IntlCalendar オブジェクトが渡されていればそのタイムゾーンを使います。 この ID は、ICU のデータベースにある妥当な識別子である必要があります。あるいは、 オフセットを明示した GMT-05:30 のような形式になります。

  IntlTimeZone オブジェクトあるいは DateTimeZone オブジェクトも指定できます。

`calendar`

  フォーマットやパースの際に使用するカレンダー。デフォルトは `NULL` で、 これは `IntlDateFormatter::GREGORIAN` を表します。 IntlDateFormatter のカレンダー定数 あるいは IntlCalendar を指定します。 渡された IntlCalendar は、クローンされます。 IntlDateFormatter によって元のオブジェクトが書き換えられることはありません。 これは、利用するカレンダーの型 (グレゴリオ暦、イスラム暦、ペルシア暦など) の判定に使います。 また、`timezone` パラメータに `NULL` を指定した場合にはタイムゾーンの判定にも使います。

`pattern`

  フォーマットやパースの際に使用するオプションのパターン。 使えるパターンについては » http://userguide.icu-project.org/formatparse/datetime を参照ください。

### 返り値

作成された IntlDateFormatter を返します。失敗した場合は `FALSE` を返します。

### 変更履歴

バージョン | 説明
--- | ---
5.5.0/PECL 3.0.0 | IntlCalendar オブジェクトを `calendar` に渡せるようになりました。 IntlTimeZone オブジェクトや DateTimeZone オブジェクトを `timezone` に渡せるようになりました。 無効なタイムゾーン ID (空文字列を含む) を `timezone` で指定できなくなりました。 `timezone` に `NULL` を指定した場合は、ICU のデフォルトではなく date_default_timezone_get() が返すタイムゾーンを使うようになりました。

### 例

例1 datefmt_create() の例

`<?php
$fmt = datefmt_create( "en_US" ,IntlDateFormatter::FULL, IntlDateFormatter::FULL,
'America/Los_Angeles', IntlDateFormatter::GREGORIAN );
echo "First Formatted output is ".datefmt_format( $fmt , 0);
$fmt = datefmt_create( "de-DE" ,IntlDateFormatter::FULL, IntlDateFormatter::FULL,
'America/Los_Angeles',IntlDateFormatter::GREGORIAN );
echo "Second Formatted output is ".datefmt_format( $fmt , 0);
$fmt = datefmt_create( "en_US" ,IntlDateFormatter::FULL, IntlDateFormatter::FULL,
'America/Los_Angeles',IntlDateFormatter::GREGORIAN ,"MM/dd/yyyy");
echo "First Formatted output with pattern is ".datefmt_format( $fmt , 0);
$fmt = datefmt_create( "de-DE" ,IntlDateFormatter::FULL, IntlDateFormatter::FULL,
'America/Los_Angeles',IntlDateFormatter::GREGORIAN ,"MM/dd/yyyy");
echo "Second Formatted output with pattern is ".datefmt_format( $fmt , 0);
?>`

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

`<?php
$fmt = new IntlDateFormatter( "en_US" ,IntlDateFormatter::FULL, IntlDateFormatter::FULL,
'America/Los_Angeles',IntlDateFormatter::GREGORIAN );
echo "First Formatted output is ".$fmt->format(0);
$fmt = new IntlDateFormatter( "de-DE" ,IntlDateFormatter::FULL, IntlDateFormatter::FULL,
'America/Los_Angeles',IntlDateFormatter::GREGORIAN );
echo "Second Formatted output is ".$fmt->format(0);
$fmt = new IntlDateFormatter( "en_US" ,IntlDateFormatter::FULL, IntlDateFormatter::FULL,
'America/Los_Angeles',IntlDateFormatter::GREGORIAN ,"MM/dd/yyyy");
echo "First Formatted output with pattern is ".$fmt->format(0);
$fmt = new IntlDateFormatter( "de-DE" ,IntlDateFormatter::FULL, IntlDateFormatter::FULL,
'America/Los_Angeles',IntlDateFormatter::GREGORIAN , "MM/dd/yyyy");
echo "Second Formatted output with pattern is ".$fmt->format(0);
?>`

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

    First Formatted output is Wednesday, December 31, 1969 4:00:00 PM PT
    Second Formatted output is Mittwoch, 31. Dezember 1969 16:00 Uhr GMT-08:00
    First Formatted output with pattern is 12/31/1969
    Second Formatted output with pattern is 12/31/1969

### 参考

- datefmt_format() - 日付/時刻 の値を文字列としてフォーマットする
- datefmt_parse() - 文字列をパースしてタイムスタンプにする
- datefmt_get_error_code() - 直近の操作のエラーコードを取得する
- datefmt_get_error_message() - 直近の操作のエラーテキストを取得する