W3docs

date_parse()

La fonction date_parse() en PHP analyse une chaîne de date et la convertit en un tableau associatif représentant ses composants.

Introduction

La fonction date_parse() en PHP prend une chaîne de date lisible par l'humain et la décompose en ses composants individuels — année, mois, jour, heure, minute, seconde — en les retournant sous forme de tableau associatif. Elle signale également les avertissements et les erreurs rencontrés lors de l'interprétation de la chaîne, ce qui en fait un outil utile pour valider les entrées de date avant de les exploiter.

Contrairement à strtotime(), qui réduit une chaîne de date à un simple horodatage Unix, date_parse() conserve chaque partie séparément et ne supprime jamais les informations de diagnostic. C'est la principale raison de l'utiliser : lorsque vous avez besoin de savoir non seulement quelle est une date, mais aussi si l'entrée était réellement une date valide.

Cette page couvre la syntaxe, la structure complète du tableau retourné, comment lire les avertissements et les erreurs, et comment date_parse() se compare aux fonctions associées.

Syntaxe

date_parse(string $datetime): array

Elle retourne toujours un tableau (elle ne retourne jamais false) ; en cas d'échec d'analyse, l'échec est décrit dans la clé errors plutôt que signalé par la valeur de retour.

Paramètres

$datetime — une string représentant la date/heure à analyser. Elle accepte les mêmes formats flexibles compris par l'analyseur de date interne de PHP, par exemple :

  • '2022-03-03 15:30:45' — date et heure complètes au format ISO
  • 'July 4, 2023' — langage naturel
  • 'now', 'tomorrow', '+1 week' — expressions relatives

Si un composant est absent de la chaîne (par exemple, aucune heure n'est fournie), sa clé est retournée avec une valeur vide plutôt qu'omise.

Valeur de retour

La fonction retourne un tableau associatif avec les clés suivantes :

  • year, month, day — les composants de la date (entiers, ou vides si absents)
  • hour, minute, second — les composants de l'heure (entiers, ou vides si absents)
  • fraction — la partie fractionnaire des secondes (un flottant, ex. 0)
  • warning_count — le nombre d'avertissements générés lors de l'analyse
  • warnings — un array d'avertissements, indexé par la position du caractère dans l'entrée
  • error_count — le nombre d'erreurs générées lors de l'analyse
  • errors — un array d'erreurs, indexé par la position du caractère dans l'entrée
  • is_localtime — indique si la chaîne contenait des informations de fuseau horaire

Lorsque is_localtime est true, des clés supplémentaires telles que zone_type, zone et is_dst décrivent le fuseau horaire.

Exemple de base

Analysons une chaîne complète de date et d'heure :

php— editable, runs on the server

Résultat :

Array
(
    [year] => 2022
    [month] => 3
    [day] => 3
    [hour] => 15
    [minute] => 30
    [second] => 45
    [fraction] => 0
    [warning_count] => 0
    [warnings] => Array()
    [error_count] => 0
    [errors] => Array()
    [is_localtime] =>
)

Chaque composant est maintenant disponible individuellement — par exemple, $date_arr['month'] vaut 3. Comme error_count et warning_count sont tous les deux à 0, nous savons que la chaîne était une date valide et propre.

Analyse d'une date partielle

date_parse() ne requiert pas une date complète. Si vous passez uniquement une date sans heure, les clés d'heure reviennent vides :

<?php

$result = date_parse('July 4, 2023');
echo "Year: {$result['year']}\n";
echo "Month: {$result['month']}\n";
echo "Day: {$result['day']}\n";
echo "Hour: '{$result['hour']}'\n"; // empty — no time was given

Résultat :

Year: 2023
Month: 7
Day: 4
Hour: ''

Cela est pratique lorsque vous acceptez des dates sans heure et souhaitez obtenir les parties individuelles sans écrire un analyseur personnalisé.

Détection des dates invalides avec les avertissements

C'est là que date_parse() excelle. Prenons le 30 février — une date qui n'existe pas. L'analyseur retournera quand même des valeurs, mais signalera le problème dans warnings :

<?php

$result = date_parse('2023-02-30');

if ($result['warning_count'] > 0) {
    foreach ($result['warnings'] as $position => $message) {
        echo "Warning at position $position: $message\n";
    }
}

Résultat :

Warning at position 11: The parsed date was invalid

Vérifiez toujours error_count (la chaîne n'a pas pu être comprise du tout) et warning_count (la chaîne a été comprise mais décrit une date impossible) avant de faire confiance aux composants analysés. Pour une vérification calendaire stricte oui/non sur une année-mois-jour spécifique, combinez cela avec checkdate().

Quand utiliser date_parse() plutôt que les fonctions associées

FonctionRetourneUtilisez-la quand
date_parse()Un array de composants + avertissements/erreursVous avez besoin des parties individuelles et souhaitez valider l'entrée
date_parse_from_format()Le même array, mais analysé selon un format expliciteL'entrée suit un format connu et fixe que vous voulez imposer
strtotime()Un simple horodatage UnixVous avez juste besoin d'un horodatage pour des calculs
date_create_from_format()Un objet DateTimeVous voulez un objet complet pour formater ou effectuer des calculs de date

Si vous devez ensuite afficher une date, consultez date() pour mettre en forme les composants en chaîne.

Conclusion

La fonction date_parse() offre un moyen simple de décomposer une chaîne de date en ses composants individuels tout en signalant les avertissements et les erreurs rencontrés. Ce double rôle — extraction et validation — la rend particulièrement utile pour vérifier les dates fournies par l'utilisateur avant de les traiter. Combinez-la avec checkdate() pour une validation stricte, ou avec strtotime() et DateTime lorsque vous avez besoin d'horodatages ou d'objets de date complets.

Pratique

Pratique
Quel est le rôle de la fonction date_parse() en PHP ?
Quel est le rôle de la fonction date_parse() en PHP ?
Was this page helpful?