Changer le format de date Eloquent dans Laravel

Laravel est un framework qui prend de l'ampleur dans le monde du développement PHP. Ce Framework utilise la librairie Carbon pour gérer ses dates (pour les champs createdat/deletedat/updated_at générés par Eloquent par exemple).

En revanche, lorsqu'on développe un site pour un public francophone, l'affichage des dates au format anglais ne convient pas parfaitement.

Heureusement, Carbon nous offre la possibilité de redéfinir simplement le format de dates utilisé par défaut.

<?php
/*
 * Defaut display of Carbon dates can be changed using the method
 * This method have to be called BEFORE outputing any date to string
 */
\Carbon\Carbon::setToStringFormat('d-m-Y H:i:s');

Cette ligne de code peux être placée dans votre AppServiceProvider par exemple. Il faut juste qu'elle soit executée au démarrage de votre Application.

Pour résumer, l'appel à setToStringFormat doit être fait avant que les dates ne soient converties en String (pour la vue en général). Le plus simple est donc soit d'y faire appel dans votre fichier start/global.php (pour une définition globale), dans votre model (suivant les dates en question) ou dans votre fichier filters.php (pour une définition en fonction de l'url).

Toutes ces possibilités permettent donc d'internationaliser correctement les dates sur votre site, qu'il ne supporte qu'une langue ou de multiples langages avec des formats différents.

Qu'avez vous pensé de cet article?