(PHP 5 >= 5.2.0, PHP 7, PHP 8)
date_parse — Retorna un array asociativo con información detallada sobre una fecha/hora dada
   date_parse() analiza la cadena
   datetime dada según las mismas reglas
   strtotime() y
   DateTimeImmutable::__construct(). En lugar de
   devolver un timestamp Unix (con strtotime()) o
   un objeto DateTimeImmutable (con
   DateTimeImmutable::__construct()), devuelve un
   array asociativo con la información que podría detectar en
   la cadena datetime dada.
  
   Si no se puede encontrar información sobre un cierto grupo de elementos, estos
   elementos del array serán definidos como false o estarán ausentes. Si es necesario
   para construir un timestamp o un objeto DateTimeImmutable a partir
   de la misma cadena datetime, varios campos pueden ser definidos
   con un valor no-false. Ver los ejemplos a continuación para los casos en que esto ocurre.
  
Retorna un array que contiene información sobre la fecha/hora analizada.
   El array retornado tiene claves para year,
   month, day, hour,
   minute, second,
   fraction, y is_localtime.
  
   Si is_localtime está presente, entonces
   zone_type indica el tipo de zona horaria. Para el tipo
   1 (desplazamiento UTC) los campos
   zone y is_dst son añadidos. Para el tipo
   2 (abreviatura) los campos
   tz_abbr y is_dst son añadidos. Para el tipo
   3 (identificador de zona horaria) los campos
   tz_abbr y tz_id son añadidos.
  
   El array incluye los campos warning_count y
   warnings. El primero indica el número
   de advertencias. Las claves del array warnings
   indican la posición en el parámetro datetime
   donde ocurrió la advertencia, con el valor de cadena describiendo
   la advertencia misma. Un ejemplo a continuación muestra tal advertencia.
  
   El array incluye también los campos error_count y
   errors. El primero indica el número
   de errores. Las claves del array errors indican
   la posición en el parámetro datetime donde ocurrió
   el error, con el valor de cadena describiendo la advertencia
   misma. Un ejemplo a continuación muestra tal advertencia.
  
    El número de elementos de array en los arrays warnings y
    errors puede ser inferior a warning_count
    o error_count si ocurrieron en la misma posición.
   
   En el caso de que la función retorne un error, el elemento "errors"
   contendrá los mensajes de error.
  
| Versión | Descripción | 
|---|---|
| 7.2.0 | El elemento zonedel array retornado ahora representa
       segundos en lugar de minutos, y su signo es invertido. Por ejemplo,-120ahora es7200. | 
Ejemplo #1 date_parse() con una cadena
    datetime completa
<?php
var_dump(date_parse("2006-12-12 10:00:00.5"));
?>El ejemplo anterior mostrará:
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)
}
   Los elementos de zona horaria solo aparecen si están incluidos
   en la cadena datetime dada. En este caso,
   siempre habrá un elemento zone_type y algunos otros
   dependiendo de su valor.
   
Ejemplo #2 date_parse() con información abreviada sobre la zona horaria
<?php
var_dump(date_parse("June 2nd, 2022, 10:28:17 BST"));
?>El ejemplo anterior mostrará:
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"
}
Ejemplo #3 date_parse() con información abreviada sobre la zona horaria
<?php
var_dump(date_parse("June 2nd, 2022, 10:28:17 Europe/London"));
?>El ejemplo anterior mostrará:
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 se analiza una cadena datetime más mínima,
   hay menos información disponible. En este ejemplo, todas las partes
   temporales son retornadas como false.
   
Ejemplo #4 date_parse() con una cadena mínima
<?php
var_dump(date_parse("June 2nd, 2022"));
?>El ejemplo anterior mostrará:
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)
}
Los formatos relativos no influyen en los valores analizados desde formatos absolutos, pero son analizados en el elemento "relativo".
Ejemplo #5 Ejemplo con date_parse() y formatos relativos
<?php
var_dump(date_parse("2006-12-12 10:00:00.5 +1 week +1 hour"));
?>El ejemplo anterior mostrará:
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)
  }
}
   Algunas estrofas, tales como Thursday (jueves) definirán
   la parte hora de la cadena como 0. Si Thursday
   (jueves) se pasa a DateTimeImmutable::__construct() la hora,
   el minuto, el segundo y la fracción también serán definidos como
   0. En el ejemplo a continuación, el elemento año
   sin embargo es dejado como false.
   
Ejemplo #6 date_parse() con efectos secundarios
<?php
var_dump(date_parse("Thursday, June 2nd"));
?>El ejemplo anterior mostrará:
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 con un formato específico