DateTime::createFromFormat is smart to handle the cases where you input an invalid date, like April 31st, and convert it to May 1st. In some cases, you do not want this automatic smart handling of the dates for example in a user input form where you want to be sure that your user did input the date he wanted. To do that, you need to get access to the warnings, this method is the only way to do it:
<?php
$date = DateTime::createFromFormat('Y-m-d', '1999-04-31');
print $date->format('Y-m-d') . PHP_EOL;
print_r(DateTime::getLastErrors());
?>
The output is:
1999-05-01
Array
(
[warning_count] => 1
[warnings] => Array
(
[10] => The parsed date was invalid
)
[error_count] => 0
[errors] => Array
(
)
)
So, here you can see, you have a warning because the date was invalid, but not an error because PHP was smart enough to convert it into a valid date. It is then up to you to do something with this information.
DateTime::getLastErrors
date_get_last_errors
(PHP 5 >= 5.3.0)
DateTime::getLastErrors -- date_get_last_errors — Devuelve las advertencias y los errores
Descripción
Estilo orientado a objetos
public static array DateTime::getLastErrors
( void
)
Estilo por procedimientos
Devuelve un array de advertencias y errores encontrados mientras se analiza un string de fecha/hora.
Parámetros
Esta función no tiene parámetros.
Valores devueltos
Devuelve un array que contiene información acerca de las advertencias y errores.
Ejemplos
Ejemplo #1 Ejemplo de DateTime::getLastErrors()
Estilo orientado a objetos
<?php
try {
$fecha = new DateTime('asdfasdf');
} catch (Exception $e) {
// Sólo para propósitos de demostración...
print_r(DateTime::getLastErrors());
// La forma real orientada a objetos de hacer esto es
// echo $e->getMessage();
}
?>
Estilo por procedimientos
<?php
$fecha = date_create('asdfasdf');
print_r(date_get_last_errors());
?>
El resultado de los ejemplos serían:
Array
(
[warning_count] => 1
[warnings] => Array
(
[6] => Double timezone specification
)
[error_count] => 1
[errors] => Array
(
[0] => The timezone could not be found in the database
)
)
Los índices 6 y 0 de la salida del ejemplo hacen referencia a la posición del carácter en el string donde ocurrió el error.
framework at photon-project dot com ¶
2 years ago
