J'utilise la calculatrice ci-dessous pour déterminer les années, les mois et les jours entre une date donnée et la date du jour. Je pensais qu'elle fonctionnait bien, mais j'ai remarqué qu'elle ne fonctionnait pas correctement au moment du passage à l'année suivante. Demain est en fait la date à laquelle la marque d'un an serait, mais il est actuellement retourner 11 months, 34 days
. Quelqu'un peut-il me dire ce qui ne va pas ? Cela devrait être 11 months, 30 days
.
function relationshipTimer($functionDate)
{
$date1 = $functionDate;
$date2 = date("Y-m-d");
$diff = abs(strtotime($date2) - strtotime($date1));
$years = floor($diff / (365 * 60 * 60 * 24));
$months = floor(($diff - ($years * 365 * 60 * 60 * 24)) / ((365 * 60 * 60 * 24) / 12));
$days = floor(($diff - $years * 365 * 60 * 60 * 24 - $months * 30 * 60 * 60 * 24) / (60 * 60 * 24));
if ($years > 0) {echo $years . " Year";}
if ($years > 1) {echo "s ";}
if ($months > 0) {echo " " . $months . " Month";}
if ($months > 1) {echo "s ";}
if ($date1 == $date2) {echo "1 Day ";}
if ($days > 0) {echo $days . " Day";}
if ($days > 1) {echo "s ";}
}
Et c'est de là que vient $functionDate :
relationshipTimer("2018-04-28");