W3docs

date_interval_create_from_date_string()

La fonction date_interval_create_from_date_string() crée un objet DateInterval à partir d'une chaîne de temps relatif en PHP.

Qu'est-ce que date_interval_create_from_date_string() ?

La fonction date_interval_create_from_date_string() est une fonction PHP intégrée qui construit un objet DateInterval à partir d'une chaîne de temps relatif lisible par un humain, telle que '1 day' ou '2 weeks 3 hours'. C'est l'alias procédural de la méthode statique DateInterval::createFromDateString() — les deux se comportent de manière identique.

Cette page couvre la signature de la fonction, les types de chaînes qu'elle accepte, la valeur qu'elle retourne, l'importante dépréciation en PHP 8.2, ainsi que des exemples exécutables pour ajouter et formater des intervalles.

Dépréciation : date_interval_create_from_date_string() a été dépréciée en PHP 8.2 et est prévue pour être supprimée dans une version future. Préférez le constructeur DateInterval avec une chaîne de durée ISO-8601 (par exemple new DateInterval('P1D')) dans le nouveau code. Voir Migration ci-dessous.

Syntaxe

date_interval_create_from_date_string(string $datetime): DateInterval|false

Paramètres

  • $datetime — Une chaîne de temps relatif, du même type que celle comprise par strtotime(). Seules les parties relatives sont utilisées ; les parties absolues (une date ou une heure explicite) sont ignorées.

Valeur de retour

Retourne un objet DateInterval en cas de succès, ou false si la chaîne ne contient pas de parties relatives pouvant être analysées. Vérifiez toujours la valeur de retour avant de l'utiliser.

Comment ça fonctionne ?

La fonction fait passer la chaîne par le même analyseur que strtotime() et ne conserve que les parties relatives. Les formats utiles incluent :

ChaîneIntervalle résultant
'1 day'1 jour
'2 weeks'14 jours
'1 month 15 days'1 mois, 15 jours
'2 hours 30 minutes'2 h 30 m
'-1 week'-7 jours

Un moins initial (par exemple '-1 week') stocke une valeur négative directement dans la propriété concernée (ici d devient -7), donc l'ajout d'un tel intervalle à une date recule dans le temps.

Utilisation de base

<?php

$interval = date_interval_create_from_date_string('1 day');
var_dump($interval->d); // int(1)

Ici, nous créons un DateInterval représentant une durée d'un jour ; sa propriété d (jours) vaut 1.

Exemples

Exemple 1 : Ajouter un intervalle à une date

Cet exemple crée un intervalle d'un jour et l'ajoute à un objet DateTime avec DateTime::add() :

php— editable, runs on the server

Résultat :

2023-03-04

Exemple 2 : Formater un intervalle

Cet exemple crée un intervalle d'un mois et l'affiche avec DateInterval::format(). Notez que %m n'est pas complété par des zéros — utilisez %M si vous souhaitez un zéro de tête :

php— editable, runs on the server

Résultat :

1 months

Exemple 3 : Se prémunir contre un retour false

Si la chaîne ne contient pas de parties relatives, la fonction retourne false. Vérifiez toujours avant d'utiliser le résultat :

<?php

$interval = date_interval_create_from_date_string('not an interval');

if ($interval === false) {
    echo "Could not parse the interval.";
} else {
    echo $interval->format('%d days');
}

Résultat :

Could not parse the interval.

Migration depuis la fonction

Comme la fonction est dépréciée, préférez le constructeur DateInterval dans le nouveau code. Il accepte une chaîne de durée ISO-8601 : P commence une période, et T sépare la partie date de la partie heure.

<?php

// Deprecated:
$old = date_interval_create_from_date_string('1 day');

// Recommended replacement:
$new = new DateInterval('P1D'); // P = period, 1D = 1 day

echo $new->format('%d day'); // 1 day

Résultat :

1 day

Conversions courantes : '1 day'P1D, '2 weeks'P14D, '1 month'P1M, '2 hours 30 minutes'PT2H30M.

Conseils de performance

  • Construisez un intervalle une seule fois et réutilisez-le ; évitez de recréer le même DateInterval dans des boucles serrées.
  • L'analyse d'une chaîne relative demande légèrement plus de travail que le constructeur, donc préférez new DateInterval('P1D') lorsque la durée est fixe et connue à l'avance.

Voir aussi

Conclusion

date_interval_create_from_date_string() transforme une chaîne de temps relatif en DateInterval, retournant false lorsque la chaîne ne peut pas être analysée. Elle a été dépréciée en PHP 8.2, donc pour le nouveau code, préférez le constructeur DateInterval avec une durée ISO-8601 (new DateInterval('P1D')). Lorsque vous l'utilisez, validez toujours la valeur de retour avant de vous fier à l'objet résultant.

Pratique

Pratique
Que fait la fonction PHP date_interval_create_from_date_string ?
Que fait la fonction PHP date_interval_create_from_date_string ?
Was this page helpful?