(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)
IntlDateFormatter::setLenient -- datefmt_set_lenient — Establecer la tolerancia del analizador
Estilo orientado a objetos
$lenient
) : boolEstilo por procedimientos
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").
fmt
El recurso del formatedor.
lenient
Establecer si el analizador es tolerante o no, por defecto es FALSE
(tolerante).
Devuelve TRUE
en caso de éxito o FALSE
en caso de error.
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() !=0 ){
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() !=0 ){
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