DateTime::getLastErrors

date_get_last_errors

(PHP 5 >= 5.3.0, PHP 7)

DateTime::getLastErrors -- date_get_last_errorsReturns the warnings and errors

说明

面向对象风格

public static array DateTime::getLastErrors ( void )

过程化风格

array date_get_last_errors ( void )

Returns an array of warnings and errors found while parsing a date/time string.

参数

此函数没有参数。

返回值

Returns array containing info about warnings and errors.

范例

Example #1 DateTime::getLastErrors() example

面向对象风格

<?php
try {
    
$date = new DateTime('asdfasdf');
} catch (
Exception $e) {
    
// For demonstration purposes only...
    
print_r(DateTime::getLastErrors());

    
// The real object oriented way to do this is
    // echo $e->getMessage();
}
?>

过程化风格

<?php
$date 
date_create('asdfasdf');
print_r(date_get_last_errors());
?>

以上例程会输出:

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
       )

)

The indexes 6, and 0 in the example output refer to the character index in the string where the error occurred.

User Contributed Notes

framework at photon-project dot com 28-Feb-2011 09:08
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.