PHP Conference Nagoya 2025

IntlDateFormatter::setLenient

datefmt_set_lenient

(PHP 5 >= 5.3.0, PHP 7, PHP 8, 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() !=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

Ver también

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top