PHP 8.4.1 Released!

date_parse_from_format

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

date_parse_from_formatRécupère les informations d'une date donnée suivant un format spécifique

Description

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

Retourne un tableau associatif contenant des informations détaillées sur une date/moment donnée.

Liste de paramètres

format

Documentation sur l'utilisation du format, veuillez vous référer à la documentation de DateTimeImmutable::createFromFormat(). Les mêmes règles s'appliquent.

datetime

Chaîne représentant la date/moment.

Valeurs de retour

Retourne un tableau associatif avec des informations détaillées sur la date/moment donné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

Cette fonction lance une ValueError lorsque le datetime contient des octets NULL.

Historique

Version Description
8.0.21, 8.1.8, 8.2.0 Lance désormais une ValueError lorsque des octets NULL sont passés dans datetime, ce qui était auparavant ignoré silencieusement.
7.2.0 L'élément zone du tableau retourné représente des secondes au lieu de minutes maintenant, et son signe est inversé. Par exemple -120 est maintenant égal à 7200.

Exemples

Exemple #1 Exemple avec date_parse_from_format()

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

L'exemple ci-dessus va afficher :

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

Exemple #2 Exemple de date_parse_from_format() avec des warnings (avertissements)

<?php
$date
= "26 August 2022 22:30 pm";
$parsed = date_parse_from_format("j F Y G:i a", $date);

echo
"Warnings count: ", $parsed['warning_count'], "\n";
foreach (
$parsed['warnings'] as $position => $message) {
echo
"\tOn position {$position}: {$message}\n";
}
?>

L'exemple ci-dessus va afficher :

Warnings count: 1
	On position 23: The parsed time was invalid

Exemple #3 Exemple de date_parse_from_format() avec des errors (erreurs)

<?php
$date
= "26 August 2022 CEST";
$parsed = date_parse_from_format("j F Y H:i", $date);

echo
"Errors count: ", $parsed['error_count'], "\n";
foreach (
$parsed['errors'] as $position => $message) {
echo
"\tOn position {$position}: {$message}\n";
}
?>

L'exemple ci-dessus va afficher :

Errors count: 3
	On position 15: A two digit hour could not be found
	On position 19: Data missing

Voir aussi

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