PHP Conference Nagoya 2025

date_parse_from_format

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

date_parse_from_formatObtiene información de una fecha dada formateada de acuerdo al formato especificado

Descripción

date_parse_from_format(string $format, string $date): array

Devuelve una matriz asociativa con información detallada acerca de la fecha dada.

Parámetros

format

Un formato aceptado por DateTime::createFromFormat().

date

Una cadena que representa la fecha.

Valores devueltos

Devuelve una matriz asociativa con información detallada de la fecha dada.

Historial de cambios

Versión Descripción
7.2.0 El elemento de zone devuelto representa ahora segundos en lugar de minutos, y su signo está invertido. Por ejemplo -120 es ahora 7200.

Ejemplos

Ejemplo #1 Ejemplo de date_parse_from_format()

<?php
$fecha
= "6.1.2009 13:00+01:00";
print_r(date_parse_from_format("j.n.Y H:iP", $fecha));
?>

El resultado del ejemplo sería:

Array
(
    [year] => 2009
    [month] => 1
    [day] => 6
    [hour] => 13
    [minute] => 0
    [second] => 0
    [fraction] => 
    [warning_count] => 0
    [warnings] => Array
        (
        )

    [error_count] => 0
    [errors] => Array
        (
        )

    [is_localtime] => 1
    [zone_type] => 1
    [zone] => 3600
    [is_dst] => 
)

Ver también

add a note

User Contributed Notes 1 note

up
0
jp dot amarok at email dot cz
1 month ago
It seems that the safest way to check for errors is not by checking the number of errors, but warnings instead. See the following example where "m" and "d" are swapped and thus not correct.

<?php
var_dump
( date_parse_from_format('m.d.Y', '18.10.2024') );

OUTPUT:
array(
12) {
[
"year"]=>
int(2024)
[
"month"]=>
int(18)
[
"day"]=>
int(10)
[
"hour"]=>
bool(false)
[
"minute"]=>
bool(false)
[
"second"]=>
bool(false)
[
"fraction"]=>
bool(false)
[
"warning_count"]=>
int(1)
[
"warnings"]=>
array(
1) {
[
10]=>
string(27) "The parsed date was invalid"
}
[
"error_count"]=>
int(0)
[
"errors"]=>
array(
0) {
}
[
"is_localtime"]=>
bool(false)
}
?>

The function simply assigns 18 to the "month" field without errors!! So simply use an if-condition and check "warning_count" to detect possible errors.
To Top