# date_parse

(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

### Description

date_parse(string `$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.

### Liste de paramètres

`datetime`

  Date/moment dans un format accepté par DateTimeImmutable::__construct().

### Valeurs de retour

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.

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.

### Erreurs / Exceptions

Dans le cas où la fonction retourne une erreur, l'élément `"errors"` contiendra les messages d'erreur.

### Historique

Version | Description
--- | ---
7.2.0 | L'élément `zone` du tableau retourné représente maintenant des secondes au lieu des minutes, et son signe est inversé. Par exemple, `-120` est maintenant `7200`.

### Exemples

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)
      }
    }

### Voir aussi

- date_parse_from_format() - Récupère les informations d'une date donnée suivant un format spécifique pour analyser le parameters `datetime` avec un format spécifique
- checkdate() - Valide une date grégorienne pour une validation de date Grégorienne
- getdate() - Retourne la date/heure