(PHP 5 >= 5.2.0, PHP 7, PHP 8)
date_parse — Retourne un tableau associatif avec des informations détaillées sur une date/moment donnée
$datetime): array
   date_parse() analyse la chaîne  
   datetime donnée selon les mêmes règles
   strtotime() et
   DateTimeImmutable::__construct(). Au lieu de 
   renvoyer un horodatage Unix (avec strtotime()) ou
   un objet DateTimeImmutable (avec
   DateTimeImmutable::__construct()), il renvoie un 
   tableau associatif avec les informations qu'il pourrait détecter dans 
   la chaîne datetime donnée.
  
   Si aucune information sur un certain groupe d'éléments ne peut être trouvée, ces 
   éléments du tableau seront définis sur false ou seront manquants. Si nécessaire 
   pour construire un horodatage ou un objet DateTimeImmutable 
   à partir de la même chaîne datetime, plusieurs champs 
   peuvent être définis sur  une valeur non-false. Voir les exemples ci-dessous
   pour les cas où cela se produit.
  
datetimeDate/moment dans un format accepté par DateTimeImmutable::__construct().
Retourne un tableau contenant des informations sur la date/moment analysée.
   Le tableau retourné a des clés pour year,
   month, day, hour,
   minute, second,
   fraction, et is_localtime.
  
   Si is_localtime est présent, alors
   zone_type indique le type de fuseau horaire. 
   Pour le type 1 (décalage UTC) les champs 
   zone et is_dst sont ajoutés.
   Pour le type 2 (abréviation) les champs 
   tz_abbr et is_dst sont ajoutés. 
   Pour le type 3 (identifiant de fuseau horaire) 
   les champs tz_abbr et tz_id
   sont ajoutés.
  
   Le tableau inclus les champs warning_count et
   warnings. Le premier indique le nombre 
   d'avertissements. Les clés du tableau warnings 
   indiquent la position dans le paramètre datetime 
   où l'avertissement s'est produit, avec la valeur de chaîne décrivant 
   l'avertissement lui-même. Un exemple ci-dessous montre un tel 
   avertissement.
  
   Le tableau inclus aussi les champs error_count et
   errors fields. Le premier indique le nombre 
   d'erreurs. Les clés du tableau errors indiquent 
   la position dans le paramètre datetime où l'erreur
   s'est produite, avec la valeur de chaîne décrivant l'avertissement 
   lui-même. Un exemple ci-dessous montre un tel avertissement.
  
    Le nombre d'éléments de tableau dans les tableaux warnings et
    errors peut être inférieur à warning_count 
    ou error_count s'ils se sont produits à la même position.
   
   Dans le cas où la fonction retourne une erreur, l'élément "errors"
   contiendra les messages d'erreur.
  
| Version | Description | 
|---|---|
| 7.2.0 | L'élément zonedu tableau retourné représente maintenant 
       des secondes au lieu des minutes, et son signe est inversé. Par exemple,-120est maintenant7200. | 
Exemple #1 date_parse() avec une chaîne
    datetime complète
<?php
var_dump(date_parse("2006-12-12 10:00:00.5"));
?>
L'exemple ci-dessus va afficher :
array(12) {
  ["year"]=>
  int(2006)
  ["month"]=>
  int(12)
  ["day"]=>
  int(12)
  ["hour"]=>
  int(10)
  ["minute"]=>
  int(0)
  ["second"]=>
  int(0)
  ["fraction"]=>
  float(0.5)
  ["warning_count"]=>
  int(0)
  ["warnings"]=>
  array(0) {
  }
  ["error_count"]=>
  int(0)
  ["errors"]=>
  array(0) {
  }
  ["is_localtime"]=>
  bool(false)
}
   Les éléments de fuseau horaire n'apparaissent que s'ils sont inclus 
   dans la chaîne datetime donnée. Dans ce cas, 
   il y aura toujours un élément zone_type et 
   quelques autres en fonction de sa valeur.
   
Exemple #2 date_parse() avec des informations abrégé sur le fuseau horaire
<?php
var_dump(date_parse("June 2nd, 2022, 10:28:17 BST"));
?>
L'exemple ci-dessus va afficher :
array(16) {
  ["year"]=>
  int(2022)
  ["month"]=>
  int(6)
  ["day"]=>
  int(2)
  ["hour"]=>
  int(10)
  ["minute"]=>
  int(28)
  ["second"]=>
  int(17)
  ["fraction"]=>
  float(0)
  ["warning_count"]=>
  int(0)
  ["warnings"]=>
  array(0) {
  }
  ["error_count"]=>
  int(0)
  ["errors"]=>
  array(0) {
  }
  ["is_localtime"]=>
  bool(true)
  ["zone_type"]=>
  int(2)
  ["zone"]=>
  int(0)
  ["is_dst"]=>
  bool(true)
  ["tz_abbr"]=>
  string(3) "BST"
}
Exemple #3 date_parse() avec des informations abrégé sur le fuseau horaire
<?php
var_dump(date_parse("June 2nd, 2022, 10:28:17 Europe/London"));
?>
L'exemple ci-dessus va afficher :
array(14) {
  ["year"]=>
  int(2022)
  ["month"]=>
  int(6)
  ["day"]=>
  int(2)
  ["hour"]=>
  int(10)
  ["minute"]=>
  int(28)
  ["second"]=>
  int(17)
  ["fraction"]=>
  float(0)
  ["warning_count"]=>
  int(0)
  ["warnings"]=>
  array(0) {
  }
  ["error_count"]=>
  int(0)
  ["errors"]=>
  array(0) {
  }
  ["is_localtime"]=>
  bool(true)
  ["zone_type"]=>
  int(3)
  ["tz_id"]=>
  string(13) "Europe/London"
}
   Si une chaîne datetime plus minimale est analysée, 
   moins d'informations sont disponibles. Dans cet exemple, toutes les parties 
   temporelles sont renvoyées comme false.
   
Exemple #4 date_parse() avec une chaîne minimale
<?php
var_dump(date_parse("June 2nd, 2022"));
?>
L'exemple ci-dessus va afficher :
array(12) {
  ["year"]=>
  int(2022)
  ["month"]=>
  int(6)
  ["day"]=>
  int(2)
  ["hour"]=>
  bool(false)
  ["minute"]=>
  bool(false)
  ["second"]=>
  bool(false)
  ["fraction"]=>
  bool(false)
  ["warning_count"]=>
  int(0)
  ["warnings"]=>
  array(0) {
  }
  ["error_count"]=>
  int(0)
  ["errors"]=>
  array(0) {
  }
  ["is_localtime"]=>
  bool(false)
}
Les formats relatifs n'influencent pas les valeurs analysées depuis des formats absoluts, mais sont analysées dans l'élément "relatif".
Exemple #5 Exemple avec date_parse() et des formats relatifs
<?php
var_dump(date_parse("2006-12-12 10:00:00.5 +1 week +1 hour"));
?>
L'exemple ci-dessus va afficher :
array(13) {
  ["year"]=>
  int(2006)
  ["month"]=>
  int(12)
  ["day"]=>
  int(12)
  ["hour"]=>
  int(10)
  ["minute"]=>
  int(0)
  ["second"]=>
  int(0)
  ["fraction"]=>
  float(0.5)
  ["warning_count"]=>
  int(0)
  ["warnings"]=>
  array(0) {
  }
  ["error_count"]=>
  int(0)
  ["errors"]=>
  array(0) {
  }
  ["is_localtime"]=>
  bool(false)
  ["relative"]=>
  array(6) {
    ["year"]=>
    int(0)
    ["month"]=>
    int(0)
    ["day"]=>
    int(7)
    ["hour"]=>
    int(1)
    ["minute"]=>
    int(0)
    ["second"]=>
    int(0)
  }
}
)
   Certaines strophes, telles que Thursday (jeudi) définiront 
   la partie heure de la chaîne sur 0. Si Thursday 
   (jeudi) is est passé àDateTimeImmutable::__construct() l'heure, 
   la minute, la seconde et la fraction seront également définies sur
   0. Dans l'exemple ci-dessous, l'élément année 
   est cependant laissé à false.
   
Exemple #6 date_parse() avec des effets secondaires
<?php
var_dump(date_parse("Thursday, June 2nd"));
?>
L'exemple ci-dessus va afficher :
array(13) {
  ["year"]=>
  bool(false)
  ["month"]=>
  int(6)
  ["day"]=>
  int(2)
  ["hour"]=>
  int(0)
  ["minute"]=>
  int(0)
  ["second"]=>
  int(0)
  ["fraction"]=>
  float(0)
  ["warning_count"]=>
  int(0)
  ["warnings"]=>
  array(0) {
  }
  ["error_count"]=>
  int(0)
  ["errors"]=>
  array(0) {
  }
  ["is_localtime"]=>
  bool(false)
  ["relative"]=>
  array(7) {
    ["year"]=>
    int(0)
    ["month"]=>
    int(0)
    ["day"]=>
    int(0)
    ["hour"]=>
    int(0)
    ["minute"]=>
    int(0)
    ["second"]=>
    int(0)
    ["weekday"]=>
    int(4)
  }
}
datetime avec un format spécifique