IntlDateFormatter::setLenient
datefmt_set_lenient
(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)
IntlDateFormatter::setLenient -- datefmt_set_lenient — パーサの寛大さを設定する
説明
オブジェクト指向型
public IntlDateFormatter::setLenient
( bool $lenient
) : bool
手続き型
datefmt_set_lenient
( IntlDateFormatter $fmt
, bool $lenient
) : bool
パターンに正確にマッチしていない入力の処理を、 パーサが厳格に行うのか寛大に行うのかを定義します。 寛大なパースを有効にすると、日付や時刻のパターンに不備がある場合でも 可能な限り値を取得しようと試みます。余計な空白があったり 理解不能なトークンがあったり、あるいは値が無効な場合 ("Feburary 30th") は処理できません。
パラメータ
fmt
- Formatter リソース。
lenient
- パーサを寛大なものにするかどうか。デフォルトは
true
(寛大) です。
返り値
成功した場合に true
を、失敗した場合に false
を返します。
例
例1 datefmt_set_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').\nResult is : " . datefmt_parse($fmt, '35/13/1971');if (intl_get_error_code() != 0) { echo "\nError_msg is : " . intl_get_error_message(); echo "\nError_code is : " . intl_get_error_code();}datefmt_set_lenient($fmt, false);echo "\nNow lenient of the formatter is : ";if ($fmt->isLenient()) { echo 'TRUE';} else { echo 'FALSE';}datefmt_parse($fmt, '35/13/1971');echo "\nTrying to do parse('35/13/1971').\nResult is : " . datefmt_parse($fmt, '35/13/1971');if (intl_get_error_code() != 0) { echo "\nError_msg is : ".intl_get_error_message(); echo "\nError_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').\nResult is : " . $fmt->parse('35/13/1971');if (intl_get_error_code() != 0) { echo "\nError_msg is : " . intl_get_error_message(); echo "\nError_code is : " . intl_get_error_code();}$fmt->setLenient(FALSE);echo "\nNow 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').\nResult is : " . $fmt->parse('35/13/1971');if (intl_get_error_code() != 0) { echo "\nError_msg is : " . intl_get_error_message(); echo "\nError_code is : " . intl_get_error_code();}?>
上の例の出力は以下となります。
lenient of the formatter is : TRUE Trying to do parse('35/13/1971'). Result is : 66038400 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