Comment calculer la différence entre deux dates à l'aide de PHP

  1. Utilisation de strtotime() pour calculer la différence entre deux dates pour la version de PHP inférieure à 5.3
  2. En utilisant les objets DateTime() et DateInterval() pour PHP 5.3 et supérieur

Il existe plusieurs façons de calculer la différence entre deux dates en utilisant PHP. Cet article vous montrera comment utiliser la version < 5.3 de PHP et la méthode la plus récente et la plus fiable pour la nouvelle version (> 5.3) pour calculer la différence entre les dates.

Utilisation de strtotime() pour calculer la différence entre deux dates pour la version de PHP inférieure à 5.3

Le strtotime() convertit deux dates en heure UNIX et calcule le nombre de secondes à partir de celles-ci. A partir de là, il est plus facile de calculer différentes méthodes en utilisant les secondes. La fonction accepte un paramètre de chaîne en anglais qui montre la description de la date-heure.

Exemple:

$firstDate = "2019-01-01";
$secondDate = "2020-03-04";

$dateDifference = abs(strtotime($secondDate) - strtotime($firstDate));

$years  = floor($dateDifference / (365 * 60 * 60 * 24));
$months = floor(($dateDifference - $years * 365 * 60 * 60 * 24) / (30 * 60 * 60 * 24));
$days   = floor(($dateDifference - $years * 365 * 60 * 60 * 24 - $months * 30 * 60 * 60 *24) / (60 * 60 * 24));

echo $years." year,  ".$months." months and ".$days." days";

//output: 1 year, 2 months and 3 days

L’exemple ci-dessus permet d’obtenir la différence entre deux dates en utilisant plusieurs fonctions comme abs(), floor() et principalement la strtotime().

La strtotime() obtient la valeur des secondes UNIX des dates et en utilisant abs() pour avoir la valeur absolue de la première date.

La fonction floor() est utilisée pour arrondir les secondes à l’entier inférieur le plus proche.

Pour obtenir l’année, il faut multiplier 365 jours par 60 minutes, 60 secondes et 24 heures, puis diviser par la différence.

Pour obtenir les mois, multipliez 30 jours par 60 minutes, 60 secondes et 24 heures, puis divisez-le par la différence de la différence de date multipliée par l’année et par 365 jours, 60 minutes, 60 secondes et 24 heures.

Pour obtenir les jours, multipliez 60 minutes, 60 secondes et 24 heures et divisez-le par la différence de la différence de date, multipliée par les années, 365 jours, 60 minutes, 60 secondes et 24 heures et par les produits des mois, 30 jours, 60 minutes et 60 secondes et 24 heures.

Enfin, rassemblez le tout dans une variable pour imprimer la différence finale.

En utilisant les objets DateTime() et DateInterval() pour PHP 5.3 et supérieur

Cette méthode est un style orienté objet pour obtenir la différence entre deux dates, c’est aussi la plus simple puisqu’elle ne nécessite pas le calcul manuel des dates et recommandée puisqu’elle est issue de la dernière version de PHP.

Exemple:

$firstDate  = new DateTime("2019-01-01");
$secondDate = new DateTime("2020-03-04");
$intvl = $firstDate->diff($secondDate);

echo $intvl->y . " year, " . $intvl->m." months and ".$intvl->d." day"; 
echo "\n";
// Total amount of days
echo $intvl->days . " days ";

//output: 1 year, 2 months and 1 day
//        428 days

Dans l’exemple ci-dessus, contrairement à l’utilisation de strtotime() et d’autres fonctions et calculs, les objets DateTime() et DateInterval() rendent le tout plus facile.

Tout d’abord, déclarer les dates en utilisant new DateTime(). Ensuite, obtenez la valeur entière de la différence en utilisant l’objet DateInterval() diff() sur la première date et passez la deuxième date comme paramètre.

Enfin, pour obtenir l’année, il suffit d’utiliser l’objet y. Utilisez m pour obtenir les mois et d pour le jour.

Article connexe - PHP Date

  • Comment obtenir la date et l'heure actuelles en PHP
  • Comment convertir la date et l'heure en chaîne de caractères en PHP
  • Article connexe - PHP DateTime

  • Comment convertir la date et l'heure en chaîne de caractères en PHP