Comment convertir une date passée en un délai en PHP ?

Réponses rédigées par Antoine
Dernière mise à jour : 2020-03-08 23:12:06
Thèmes : webmaster - php - date
Question

Je cherche à convertir une date passée, qui est au format datetime MySQL (2019-30-01 00:22:35), en un délai, par exemple il y a 35 jours 45 minutes et 20 secondes.

Réponse

Pour convertir une date au format datetime, en un délai passé, en PHP, vous pouvez créer une fonction qui calcule la différence entre deux dates, puis l'exprime en nombre d'années, mois, jours, heures etc.

<?php
function delai($date) 
{
    $maintenant = new DateTime;
    $delai = new DateTime($date);
    $diff = $maintenant->diff($delai);
    $diff->w = floor($diff->d / 7);
    $diff->d -= $diff->w * 7;

    $string = array(
        'y' => 'an',
        'm' => 'mois',
        'w' => 'semaine',
        'd' => 'jour',
        'h' => 'heure',
        'i' => 'minute',
        's' => 'seconde',
    );
    foreach ($string as $cle => $data) 
    {
        if ($diff->$cle) 
        {
            $data = $diff->$cle . ' ' . $data . ((($diff->$cle > 1) && ($cle !='m')) ? 's' : '');
            echo $data." ";
        } 
        else 
        {
            unset($string[$cle]);
        }
    }
}
delai('2018-08-01 00:10:44');
?>