(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 zone del array retornado ahora representa
segundos en lugar de minutos, y su signo es invertido. Por ejemplo,
-120 ahora es 7200 .
|
Ejemplo #1 date_parse() con una cadena
datetime
completa
<?php
var_dump(date_parse("2006-12-12 10:00:00.5"));
?>
El resultado del ejemplo sería:
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 resultado del ejemplo sería:
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 resultado del ejemplo sería:
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 resultado del ejemplo sería:
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 resultado del ejemplo sería:
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 resultado del ejemplo sería:
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