W3docs

date_parse()

La función date_parse() en PHP analiza una cadena de fecha y la convierte en un array asociativo con sus componentes individuales.

Introducción

La función date_parse() en PHP toma una cadena de fecha legible por humanos y la desglosa en sus componentes individuales — año, mes, día, hora, minuto, segundo — devolviéndolos como un array asociativo. De forma fundamental, también reporta cualquier advertencia y error que encontró al interpretar la cadena, lo que la convierte en una herramienta útil para validar la entrada de fechas antes de actuar sobre ella.

A diferencia de strtotime(), que colapsa una cadena de fecha en un único timestamp Unix, date_parse() mantiene cada parte por separado y nunca descarta los diagnósticos. Esa distinción es la razón principal para utilizarla: cuando necesitas saber no solo qué fecha es, sino si la entrada era realmente una fecha válida.

Esta página cubre la sintaxis, la forma completa del array devuelto, cómo leer advertencias y errores, y cómo date_parse() se compara con las funciones relacionadas.

Sintaxis

date_parse(string $datetime): array

Siempre devuelve un array (nunca devuelve false); cuando el análisis falla, el fallo se describe en la clave errors en lugar de señalarse mediante el valor de retorno.

Parámetros

$datetime — una string que representa la fecha/hora a analizar. Acepta los mismos formatos flexibles que entiende el analizador de fechas interno de PHP, por ejemplo:

  • '2022-03-03 15:30:45' — fecha y hora completas en estilo ISO
  • 'July 4, 2023' — lenguaje natural
  • 'now', 'tomorrow', '+1 week' — expresiones relativas

Si un componente está ausente en la string (por ejemplo, no se proporciona hora), su clave se devuelve como un valor vacío en lugar de omitirse.

Valor de retorno

La función devuelve un array asociativo con las siguientes claves:

  • year, month, day — los componentes de la fecha (enteros, o vacío si no están presentes)
  • hour, minute, second — los componentes de la hora (enteros, o vacío si no están presentes)
  • fraction — la parte fraccionaria de los segundos (un float, p. ej. 0)
  • warning_count — el número de advertencias generadas durante el análisis
  • warnings — un array de advertencias, indexado por la posición del carácter en la entrada
  • error_count — el número de errores generados durante el análisis
  • errors — un array de errores, indexado por la posición del carácter en la entrada
  • is_localtime — si la string contenía información de zona horaria

Cuando is_localtime es true, claves adicionales como zone_type, zone e is_dst describen la zona horaria.

Ejemplo básico

Analicemos una cadena completa de fecha y hora:

php— editable, runs on the server

Salida:

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] =>
)

Cada componente está ahora disponible individualmente — por ejemplo, $date_arr['month'] es 3. Como error_count y warning_count son ambos 0, sabemos que la cadena era una fecha limpia y válida.

Análisis de una fecha parcial

date_parse() no requiere una fecha completa. Si solo pasas una fecha sin hora, las claves de hora vuelven vacías:

<?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

Salida:

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

Esto es muy útil cuando aceptas fechas sin horas y quieres las piezas individuales sin escribir un analizador personalizado.

Detección de fechas inválidas con advertencias

Aquí es donde date_parse() brilla. Considera el 30 de febrero — una fecha que no existe. El analizador igualmente devolverá valores, pero marcará el problema en 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";
    }
}

Salida:

Warning at position 11: The parsed date was invalid

Siempre verifica error_count (la cadena no pudo entenderse en absoluto) y warning_count (la cadena se entendió pero describe una fecha imposible) antes de confiar en los componentes analizados. Para una verificación estricta de sí/no en el calendario sobre un año-mes-día específico, combínala con checkdate().

Cuándo usar date_parse() frente a funciones relacionadas

FunciónDevuelveÚsala cuando
date_parse()Array de componentes + advertencias/erroresNecesitas las partes individuales y quieres validar la entrada
date_parse_from_format()El mismo array, pero analizado contra un formato explícitoLa entrada sigue un formato conocido y fijo que quieres aplicar
strtotime()Un único timestamp UnixSolo necesitas un timestamp para cálculos
date_create_from_format()Un objeto DateTimeQuieres un objeto completo para formatear o hacer operaciones con fechas

Si más tarde necesitas renderizar una fecha, consulta date() para formatear los componentes en una cadena.

Conclusión

La función date_parse() ofrece una manera sencilla de desglosar una cadena de fecha en sus componentes individuales mientras reporta cualquier advertencia y error en el proceso. Ese doble papel — extracción y validación — la hace especialmente útil para verificar fechas proporcionadas por el usuario antes de procesarlas. Combínala con checkdate() para una validación estricta, o con strtotime() y DateTime cuando necesites timestamps u objetos de fecha completos.

Práctica

Práctica
¿Cuál es el propósito de la función date_parse() en PHP?
¿Cuál es el propósito de la función date_parse() en PHP?
Was this page helpful?