Outils pour utilisateurs

Outils du site


Panneau latéral

devweb:laravel:carbon (lu 45477 fois)

Carbon

Docs ⇒ http://carbon.nesbot.com/docs/

Certain champ par défaut comme createdat, updatedat et deleted_at retourne une instance Carbon avec Eloquent Si vous avez d’autres champs date dans votre table, il faut les rajouter dans son model <code php> protected $dates = [ ‘deadline’, ‘closed_at’ ]; </code> Ainsi dans une vue, vous pouvez facilement formater votre date <code php> $issue→deadline→format(‘d/m/Y’) $comment→created_at→diffForHumans() </code> Le diffForHumans() est intéressant :) mais il faudra le mettre en français par défaut. Pour cela, j’ai modifié le fichier app\Providers\AppServiceProvider.php en considérant que votre app.locale=‘fr’ et votre app.timezone=‘Europe/Paris’ <code php> <?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use Carbon\Carbon; class AppServiceProvider extends ServiceProvider { / * Bootstrap any application services. * * @return void */ public function boot() { Carbon::setLocale(config(‘app.locale’)); } /** * Register any application services. * * @return void */ public function register() { } }</code> ===== Exemple ===== Transformer des secondes en heure minute seconde <code php> »> \Carbon\Carbon::parse(‘0sec’)→diff(\Carbon\Carbon::parse(‘490sec’))→format('%H:%I:%S’) ⇒ “00:08:10” </code> Récupérer une date au format français dd/mm/yyyy pour l’intégrer dans un model <code php> »> \Carbon\Carbon::createFromFormat(‘d/m/Y’,'11/06/1990’) ⇒ Carbon\Carbon {#688 +“date”: “1990-06-11 16:52:04.000000”, +“timezone_type”: 3, +“timezone”: “Europe/Paris”, } </code> exemple dans un controller <code php> $charge→datedebut = Carbon::createFromFormat(‘d/m/Y’,$request→input(‘datedebut’)); $charge→datefin = Carbon::createFromFormat(‘d/m/Y’,$request→input(‘datefin’)); </code> Plein d’autre exemple dans la docs ⇒ http://carbon.nesbot.com/docs/ ===== Bug ===== Un gros bug de calcul entre les mois ⇒ https://github.com/briannesbitt/Carbon/issues/344 Pour calculer le nombre de mois entre 2 dates il va falloir utiliser une fonction annexe … <code php> function diffInMonths(\DateTime $date1, \DateTime $date2) { $diff = $date1→diff($date2); $months = $diff→y * 12 + $diff→m + $diff→d / 30; return (int) round($months); } </code>

devweb/laravel/carbon.txt · Dernière modification : de edmc73