IntlDateFormatter
PHP Manual

IntlDateFormatter::setLenient

datefmt_set_lenient

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

IntlDateFormatter::setLenient -- datefmt_set_lenientEstablecer la tolerancia del analizador

Descripción

Estilo orientado a objetos

bool IntlDateFormatter::setLenient ( bool $lenient )

Estilo por procedimientos

bool datefmt_set_lenient ( IntlDateFormatter $fmt , bool $lenient )

Define si el analizador es estricto o tolerante al interpretar salidas que no coinciden exactamente con el patrón. Habilitar el análisis tolerante permite al analizador aceptar patrones de fecha u hora defectuosos, procesando lo más posible para obtener un valor. No se aceptan los espacios extra, tokens no reconocidos, o valores no válidos ("30 de febrero").

Parámetros

fmt

El recurso del formatedor.

lenient

Establecer si el analizador es tolerante o no, por defecto es FALSE (tolerante).

Valores devueltos

Devuelve TRUE en caso de éxito o FALSE en caso de error.

Ejemplos

Ejemplo #1 Ejemplo de datefmt_set_lenient()

<?php
$fmt 
datefmt_create"en_US"IntlDateFormatter::FULLIntlDateFormatter::FULL'America/Los_Angeles'IntlDateFormatter::GREGORIAN"dd/mm/yyyy");
echo 
"La tolerancia del formateador es : ";
if( 
$fmt->isLenient() ){
        echo(
'TRUE');
}else{
        echo(
'FALSE');
}
datefmt_parse($fmt,"35/13/1971");
echo 
"\n Intentar realizar parse('35/13/1971'). El resultado es : " .datefmt_parse($fmt,"35/13/1971");
if( 
intl_get_error_code() !=){
        echo 
"El mensaje del error es : ".intl_get_error_message();
        echo 
"El código del error es : ".intl_get_error_code();
}
datefmt_set_lenient($fmt,false);
echo 
"Ahora la toleranca del formateador es : ";
if( 
$fmt->isLenient() ){
        echo(
'TRUE');
}else{
        echo(
'FALSE');
}
datefmt_parse($fmt,"35/13/1971");
echo 
"\n Intentar realizar parse('35/13/1971'). El resultado es : " .datefmt_parse($fmt,"35/13/1971");
if( 
intl_get_error_code() !=){
        echo 
"El mensaje del error es : ".intl_get_error_message();
        echo 
"El código del error es : ".intl_get_error_code();
}

?>

Ejemplo #2 Ejemplo orientado a objetos

<?php
$fmt 
= new IntlDateFormatter("en_US"IntlDateFormatter::FULLIntlDateFormatter::FULL'America/Los_Angeles'IntlDateFormatter::GREGORIAN"dd/mm/yyyy"  );
echo 
"La tolerancia del formateador es : ";
if( 
$fmt->isLenient() ){
        echo(
'TRUE');
}else{
        echo(
'FALSE');
}
$fmt->parse("35/13/1971");
echo 
"\n Intentar realizar parse('35/13/1971'). El resultado es : " .$fmt->parse("35/13/1971");
if( 
intl_get_error_code() !=){
        echo 
"El mensaje del error es : ".intl_get_error_message();
        echo 
"El código del error es : ".intl_get_error_code();
}

$fmt->setLenient(FALSE);
echo 
"Ahora la toleranca del formateador es : ";
if( 
$fmt->isLenient() ){
        echo(
'TRUE');
}else{
        echo(
'FALSE');
}
$fmt->parse("35/13/1971");
echo 
"\n Intentar realizar parse('35/13/1971'). El resultado es : " .$fmt->parse("35/13/1971");
if( 
intl_get_error_code() !=){
        echo 
"El mensaje del error es : ".intl_get_error_message();
        echo 
"El código del error es : ".intl_get_error_code();
}

?>

El resultado del ejemplo sería:

La tolerancia del formateador es : TRUE
Intentar realizar parse('35/13/1971').
El resultado es : -2147483
Ahora la toleranca del formateador es : FALSE
Intentar realizar parse('35/13/1971').
El resultado es : El mensaje del error es : Date parsing failed: U_PARSE_ERROR El código del error es : 9

Ver también


IntlDateFormatter
PHP Manual