(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)
IntlDateFormatter::setLenient -- datefmt_set_lenient — Configura la flexibilidad del analizador
Estilo orientado a objetos
Estilo por procedimientos
Define si el analizador es estricto o flexible al interpretar strings que no coinciden exactamente con el patrón buscado. Activar la flexibilidad del analizador permite aceptar valores que podrían ser considerados erróneos por el analizador estricto. Los espacios, los caracteres desconocidos o las fechas inválidas no son aceptados.
formatter
El recurso de formateador IntlDateFormatter.
lenient
Si el analizador es flexible o no, por
defecto, vale true
(flexible).
Ejemplo #1 Ejemplo con datefmt_set_lenient()
<?php
$fmt = datefmt_create(
'en_US',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'America/Los_Angeles',
IntlDateFormatter::GREGORIAN,
'dd/MM/yyyy'
);
echo 'El formateador es flexible : ';
if ($fmt->isLenient()) {
echo 'Sí';
} else {
echo 'No';
}
datefmt_parse($fmt, '35/13/1971');
echo "\nIntento de análisis de la fecha '35/13/1971'.\nEl resultado es : " . datefmt_parse($fmt, '35/13/1971');
if (intl_get_error_code() != 0) {
echo "\nError_msg es : " . intl_get_error_message();
echo "\nError_code es : " . intl_get_error_code();
}
datefmt_set_lenient($fmt, false);
echo "\nAhora, el formateador es estricto : ";
if ($fmt->isLenient()) {
echo 'Sí';
} else {
echo 'No';
}
datefmt_parse($fmt, '35/13/1971');
echo "\nIntento de análisis de la fecha '35/13/1971'.\nEl resultado es : " . datefmt_parse($fmt, '35/13/1971');
if (intl_get_error_code() != 0) {
echo "\nError_msg es : ".intl_get_error_message();
echo "\nError_code 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 'El formateador es flexible : ';
if ($fmt->isLenient()) {
echo 'Sí';
} else {
echo 'No';
}
$fmt->parse('35/13/1971');
echo "\n Intento de análisis de la fecha '35/13/1971'.\nEl resultado es : " . $fmt->parse('35/13/1971');
if (intl_get_error_code() != 0) {
echo "\nError_msg es : " . intl_get_error_message();
echo "\nError_code es : " . intl_get_error_code();
}
$fmt->setLenient(FALSE);
echo "\nAhora, el formateador es estricto : ";
if ($fmt->isLenient()) {
echo 'Sí';
} else {
echo 'No';
}
$fmt->parse('35/13/1971');
echo "\n Intento de análisis de la fecha '35/13/1971'.\nEl resultado es : " . $fmt->parse('35/13/1971');
if (intl_get_error_code() != 0) {
echo "\nError_msg es : " . intl_get_error_message();
echo "\nError_code es : " . intl_get_error_code();
}
?>
El resultado del ejemplo sería:
El formateador es flexible : No Intento de análisis de la fecha '35/13/1971'. El resultado es : 66038400 Ahora, el formateador es estricto : Sí Intento de análisis de la fecha '35/13/1971'. El resultado es : Error_msg es : Date parsing failed: U_PARSE_ERROR Error_code es : 9