IntlDateFormatter::setLenient

datefmt_set_lenient

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

IntlDateFormatter::setLenient -- datefmt_set_lenientEstablecer la tolerancia del analizador

Descripción

Estilo orientado a objetos

public IntlDateFormatter::setLenient ( bool $lenient ) : bool

Estilo por procedimientos

datefmt_set_lenient ( IntlDateFormatter $fmt , bool $lenient ) : bool

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::FULL
    
IntlDateFormatter::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').\nEl resultado es : ' datefmt_parse($fmt'35/13/1971');
if( 
intl_get_error_code() !=){
    echo 
"\nEl mensaje del error es : ".intl_get_error_message();
    echo 
"\nEl código del error es : ".intl_get_error_code();
}
datefmt_set_lenient($fmt,false);
echo 
"\nAhora 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').\nEl resultado es : " datefmt_parse($fmt'35/13/1971');
if (
intl_get_error_code() !=){
    echo 
"\nEl mensaje del error es : ".intl_get_error_message();
    echo 
"\nEl código del error es : ".intl_get_error_code();
}

?>

Ejemplo #2 Ejemplo orientado a objetos

<?php
$fmt 
= new IntlDateFormatter(
    
'en_US',
    
IntlDateFormatter::FULL,
    
IntlDateFormatter::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').\nEl resultado es : " . $fmt->parse('35/13/1971');
if (intl_get_error_code() !=0 ){
    echo "\nEl mensaje del error es : ".intl_get_error_message();
    echo "\nEl código del error es : ".intl_get_error_code();
}

$fmt->setLenient(FALSE);
echo '
\nAhora 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').\nEl resultado es : " . $fmt->parse('35/13/1971');
if (intl_get_error_code() !=0 ){
    echo "\nEl mensaje del error es : ".intl_get_error_message();
    echo "\nEl 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 : 66038400
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