W3docs

La fonction date_get_last_errors() en PHP

Découvrez comment utiliser date_get_last_errors() en PHP pour récupérer les erreurs et avertissements liés aux dates.

En avez-vous assez de gérer les erreurs liées aux dates dans votre code PHP ? Si c'est le cas, vous avez de la chance. La fonction date_get_last_errors() de PHP est là pour vous aider.

Dans cet article, nous allons explorer en profondeur le fonctionnement de la fonction date_get_last_errors(), ses différents paramètres et la façon dont vous pouvez l'utiliser pour résoudre les problèmes liés aux dates dans votre code PHP.

Qu'est-ce que la fonction date_get_last_errors() ?

La fonction date_get_last_errors() est une fonction PHP intégrée (disponible depuis PHP 5.2.0) qui vous permet de récupérer des informations sur la dernière erreur ou le dernier avertissement lié à une date. Elle retourne un array associatif contenant warning_count, warnings, error_count et errors, qui fournissent les codes spécifiques et les descriptions textuelles de ce qui s'est mal passé lors de la dernière opération de date/heure.

Comment utiliser date_get_last_errors()

Pour utiliser la fonction date_get_last_errors(), vous l'appelez après l'échec d'une fonction de création ou de modification de date. Pour un code prêt pour la production, vous devez toujours vérifier que la fonction de date a retourné false avant de récupérer les détails de l'erreur. Voici un exemple :

php— editable, runs on the server

Dans cet exemple, nous tentons de créer un objet date à partir de la chaîne '2022-13-01', qui est une valeur de date invalide (le mois 13 n'existe pas). Après avoir vérifié que date_create_from_format() a retourné false, nous appelons date_get_last_errors() et affichons le tableau retourné à l'aide de print_r().

Le résultat de ce code sera :

Array
(
    [warning_count] => 1
    [warnings] => Array
        (
            [10] => The parsed date was invalid
        )

    [error_count] => 0
    [errors] => Array
        (
        )

)

Comme vous pouvez le voir, le tableau retourné fait la distinction entre les avertissements et les erreurs :

  • Les erreurs signifient que l'entrée n'a pas pu être analysée du tout (par exemple, un caractère parasite ou un format qui ne correspond pas à la chaîne).
  • Les avertissements signifient que la chaîne a été analysée, mais que le résultat est douteux — comme un composant hors plage. Le mois 13 n'existe pas, donc PHP l'enroule ou le rejette et génère l'avertissement [10] => The parsed date was invalid.

Attention : la valeur de retour en l'absence d'erreurs

Un piège courant est que la valeur de retour a changé selon les versions de PHP :

  • PHP 5.2 – 8.1 : retourne toujours le tableau associatif, avec warning_count et error_count à 0 lorsque rien ne s'est mal passé.
  • PHP 8.2 et versions ultérieures : retourne false (boolean) lorsque l'opération de date précédente n'a produit ni avertissements ni erreurs.

C'est précisément pourquoi vous devez vous baser sur le résultat de la fonction de date elle-même plutôt que sur date_get_last_errors() :

<?php
// A valid date — parsing succeeds.
$result = date_create_from_format('Y-m-d', '2022-01-15');

if ($result === false) {
    // This branch is skipped because the date is valid.
    print_r(date_get_last_errors());
} else {
    echo "Parsed successfully: " . $result->format('Y-m-d');
}
?>

Résultat :

Parsed successfully: 2022-01-15

Étant donné que $result est un objet DateTime valide, nous n'appelons jamais date_get_last_errors() — évitant ainsi entièrement la surprise false-vs-array selon la version.

Flux de débogage pratique

Lorsque vous gérez l'analyse de dates en production, suivez ce schéma pour capturer et journaliser les problèmes en toute sécurité :

  1. Appelez la fonction de création de date (par ex., date_create_from_format() ou DateTime::createFromFormat()).
  2. Vérifiez si le résultat est false.
  3. Si false, appelez date_get_last_errors() pour inspecter les tableaux warnings et errors.
  4. Journalisez ou affichez les codes et messages d'avertissement/erreur spécifiques pour identifier le problème d'analyse exact sans interrompre votre application.

Paramètres

La fonction date_get_last_errors() ne prend aucun paramètre. Elle retourne simplement des informations sur la dernière erreur ou le dernier avertissement lié à une date (un array associatif, ou false sur PHP 8.2+ lorsqu'il n'y en avait aucun).

Équivalent orienté objet

Si vous travaillez avec la classe DateTime plutôt qu'avec les fonctions procédurales, les mêmes informations sont disponibles via la méthode statique DateTime::getLastErrors() :

<?php
$result = DateTime::createFromFormat('Y-m-d', 'not-a-date');

if ($result === false) {
    print_r(DateTime::getLastErrors());
}
?>

Résultat :

Array
(
    [warning_count] => 0
    [warnings] => Array
        (
        )

    [error_count] => 3
    [errors] => Array
        (
            [0] => A four digit year could not be found
            [10] => Not enough data available to satisfy format
        )

)

Cette fois, la chaîne ne peut pas être analysée du tout, donc les problèmes sont signalés comme des erreurs (et non des avertissements). DateTime::getLastErrors() retourne la même structure que date_get_last_errors() et suit les mêmes règles de version décrites ci-dessus.

Fonctions associées

  • date_create_from_format() — analyser une chaîne de date selon un format explicite ; la fonction dont vous inspectez les erreurs ici.
  • date_create() — créer un objet DateTime à partir d'une chaîne de date flexible.
  • checkdate() — valider une date grégorienne avant de tenter de l'analyser.
  • date() — formater un horodatage une fois que vous avez une date valide.

Conclusion

La fonction date_get_last_errors() est un outil précieux pour tout développeur PHP qui doit résoudre des erreurs liées aux dates. En exposant l'avertissement ou l'erreur spécifique survenu lors de la dernière opération de date/heure, elle vous permet de déboguer les problèmes d'analyse sans interrompre votre application. N'oubliez pas les deux bonnes pratiques clés : toujours vous baser sur la valeur de retour de la fonction de date elle-même (false), et tenir compte du changement introduit en PHP 8.2+ où date_get_last_errors() elle-même retourne false lorsque rien ne s'est mal passé.

Pratique

Pratique
Que fait la fonction date_get_last_errors() en PHP ?
Que fait la fonction date_get_last_errors() en PHP ?
Was this page helpful?