IntlDateFormatter::getTimeZoneId
IntlDateFormatter::localtime
IntlDateFormatter
PHP Manual

# IntlDateFormatter::isLenient

# datefmt_is_lenient

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

IntlDateFormatter::isLenient -- datefmt_is_lenient — IntlDateFormatter で使用する寛大さを取得する

### 説明

オブジェクト指向型

bool IntlDateFormatter::isLenient ( void )

手続き型

bool datefmt_is_lenient ( IntlDateFormatter `$fmt` )

パターンに正確にマッチしていない入力の処理を、 パーサが厳格に行うのか寛大に行うのかを調べます。

### パラメータ

`fmt`

  Formatter リソース。

### 返り値

寛大なパーサの場合は `TRUE`、厳格なパーサの場合は `FALSE` 返します。 デフォルトのパーサは厳格なパーサです。

### 例

例1 datefmt_is_lenient() の例

`<?php
$fmt = datefmt_create( "en_US", IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'America/Los_Angeles', IntlDateFormatter::GREGORIAN, "dd/mm/yyyy");
echo "lenient of the formatter is : ";
if( $fmt->isLenient() ){
echo('TRUE');
}else{
echo('FALSE');
}
datefmt_parse($fmt,"35/13/1971");
echo "\n Trying to do parse('35/13/1971').Result is : " .datefmt_parse($fmt,"35/13/1971");
if( intl_get_error_code() !=0 ){
echo "Error_msg is : ".intl_get_error_message();
echo "Error_code is : ".intl_get_error_code();
}
datefmt_set_lenient($fmt,false);
echo "Now lenient of the formatter is : ";
if( $fmt->isLenient() ){
echo('TRUE');
}else{
echo('FALSE');
}
datefmt_parse($fmt,"35/13/1971");
echo "\n Trying to do parse('35/13/1971').Result is : " .datefmt_parse($fmt,"35/13/1971");
if( intl_get_error_code() !=0 ){
echo "Error_msg is : ".intl_get_error_message();
echo "Error_code is : ".intl_get_error_code();
}
?>`

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

`<?php
$fmt = new IntlDateFormatter("en_US", IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'America/Los_Angeles', IntlDateFormatter::GREGORIAN, "dd/mm/yyyy" );
echo "lenient of the formatter is : ";
if( $fmt->isLenient() ){
echo('TRUE');
}else{
echo('FALSE');
}
$fmt->parse("35/13/1971");
echo "\n Trying to do parse('35/13/1971').Result is : " .$fmt->parse("35/13/1971");
if( intl_get_error_code() !=0 ){
echo "Error_msg is : ".intl_get_error_message();
echo "Error_code is : ".intl_get_error_code();
}
$fmt->setLenient(FALSE);
echo "Now lenient of the formatter is : ";
if( $fmt->isLenient() ){
echo('TRUE');
}else{
echo('FALSE');
}
$fmt->parse("35/13/1971");
echo "\n Trying to do parse('35/13/1971').Result is : " .$fmt->parse("35/13/1971");
if( intl_get_error_code() !=0 ){
echo "Error_msg is : ".intl_get_error_message();
echo "Error_code is : ".intl_get_error_code();
}
?>`

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

    lenient of the formatter is : TRUE
    Trying to do parse('35/13/1971').
    Result is : -2147483
    Now lenient of the formatter is : FALSE
    Trying to do parse('35/13/1971').
    Result is : Error_msg is : Date parsing failed: U_PARSE_ERROR Error_code is : 9

### 参考

- datefmt_set_lenient() - パーサの寛大さを設定する
- datefmt_create() - Date Formatter を作成する

IntlDateFormatter::getTimeZoneId
IntlDateFormatter::localtime
IntlDateFormatter
PHP Manual