Comment calculer la durée entre deux dates dans Laravel

Mis à jour il y a 9 mois

Un tutoriel pour déterminer la durée entre la date de début ($date1) et la date de fin ($date2) en années, mois, heures, minutes et secondes dans un projet Laravel.

Wilo Ahadi

Auteur

Wilo A.

Technologies

Laravel, PHP

🌎 La version anglaise de cette publication : How to calculate the duration between two dates in Laravel

Pour illustrer le processus de calcul du temps écoulé entre deux dates, nous allons nous intéresser aux champs created_at et updated_at du modèle (par exemple, App\Models\User.php dans votre projet Laravel). Ces champs indiquent respectivement la date de création et de dernière mise à jour du modèle.

Pour trouver l'intervalle de temps entre ces deux dates, nous allons utiliser la méthode diff() :

class User extends Authenticatable
{
    public function getDurationAttribute () {

        $date1 = $this->created_at;

        $date2 = $this->updated_at;

        $duration = $date1->diff($date2); // Différence entre les dates

        return $duration; // Objet DateInterval

    }
}

La méthode getDurationAttribute() renvoie un objet DateInterval. Cet objet peut être formaté en année, mois, jour, heure, minute et seconde à l'aide de la méthode format(), puis affiché sur la vue Blade :

{{ $user->duration->format("%y années %m mois %d jours %h heures %i minutes %s secondes") }}

Ce code affichera une chaîne comme celle-ci :

1 années 3 mois 16 jours 18 heures 33 minutes 12 secondes

Les formats acceptables sont décrits dans la documentation DateInterval.

🖐 Notez-bien : Par défaut, les attributs created_at et updated_at sont des objets Illuminate\Support\Carbon. S'il s'agit d'un autre champ temporel (date/heure), vous devrez le convertir en objet Carbon via la propriété $casts du modèle :

protected $casts = [
    "start_time" => "datetime",
    "end_time" => "datetime"
];

Portez-vous bien 😉

Cette publication vous a plu ?
Partagez-la avec vos ami(e)s sur les réseaux sociaux.

Wilo Ahadi

Wilo Ahadi, l'auteur

Passionné de l'informatique, je suis spécialiste en techniques des systèmes et réseaux, développeur web et mobile, infographiste et designer, ... J'aime partager mon expérience en formant sur la plateforme Akili School

Voir profil

Commentaires