(PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
IntlDateFormatter::setLenient -- datefmt_set_lenient — Establecer la tolerancia del analizador
Estilo orientado a objetos
$lenient
)Estilo 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'). El resultado es : " .datefmt_parse($fmt,"35/13/1971");
if( intl_get_error_code() !=0 ){
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() !=0 ){
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::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'). El resultado es : " .$fmt->parse("35/13/1971");
if( intl_get_error_code() !=0 ){
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() !=0 ){
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