Laravel'de Carbon Sınıfını kullanarak iki tarih arasındaki farkı yıl, ay, gün, saat, dakika, saniye şeklinde gösterme yöntemi



2 dakikalık okuma
July 30, 2017

Laravel’de tarih ve zaman işlemleri için Carbon sınıfı kullanılıyor. Bu sınıf açık lisanslı bir projedir ve PHP camiasında meşhurdur. Laravel kullanmayan kişiler de buradan Carbon sınıfını indirerek PHP uygulamalarında kullanabilirler.

Laravel’de bu sınıfı kullanmadan önce aşağıdaki gibi tanımlamayı unutmayın:

use Carbon\Carbon;

Sonra örneği inceleyelim:

    $simdiki_tarih = Carbon ::now();
    $ileriki_tarih = Carbon ::parse('2019-01-01 15:00:00');

    $saniye_farki = $simdiki_tarih -> diffInSeconds($ileriki_tarih, false);
    $dakika_farki = $simdiki_tarih -> diffInMinutes($ileriki_tarih, false);
    $saat_farki   = $simdiki_tarih -> diffInHours($ileriki_tarih, false);
    $gun_farki    = $simdiki_tarih -> diffInDays($ileriki_tarih, false);
    $ay_farki     = $simdiki_tarih -> diffInMonths($ileriki_tarih, false);
    $yil_farki    = $simdiki_tarih -> diffInYears($ileriki_tarih, false);

    echo $yil_farki.'yıl, '.$ay_farki.' ay, '.$gun_farki. 'gün, '.$dakika_farki.'dakika, '.$saniye_farki.'saniye kaldı.';

Çıktı şu şekilde olacak:

1yıl, 17 ay, 519gün, 748779dakika, 44926782saniye kaldı.

Yukarıdaki kodda önemli kısım aşağıdaki diffInSeconds metodunda gördüğünüz 2. parametredir.

$saniye_farki = $simdiki_tarih -> diffInSeconds($ileriki_tarih, false);

Bu parametre girilmezse sonuç mutlak değer çıkar. Yani her daim pozitif. Eğer false yaparsanız $simdiki_tarih değeri $ileriki_tarih değerinden büyükse (-) negatif çıkar. Böylece biz, $simdiki_tarih değerinin $ileriki_tarih değerinden büyük olduğunu anlarız.

diffForHumans kullanarak farklı bir yaklaşımla tarihi gösterme

    $simdiki_tarih = Carbon ::now('Europe/Istanbul');

    echo $simdiki_tarih->yesterday()-> diffForHumans();   // 1 day ago
    echo $simdiki_tarih->yesterday()-> diffForHumans(null,true);   // 1 day 

Tarihler hep İngilizce olarak gösteriliyor. Bunları Türkçe göstermek için buradaki yazıma bakın.

“2 Tarih arasındaki fark 24 saatten az ise H:i:s formatında gösterim yapabiliriz.” Şöyle:

    $simdiki_tarih = Carbon ::parse('2017-02-11 15:34:25');
    $ileriki_tarih = Carbon ::parse('2017-02-11 19:43:12');

    $saniye_farki = $simdiki_tarih -> diffInSeconds($ileriki_tarih, false);

    $saatdakikasaniye_seklinde = gmdate('H:i:s',$saniye_farki);

    echo $saatdakikasaniye_seklinde. ' kaldı';

Çıktı şu şekilde olacak:

04:08:47 kaldı

Ek Bilgi: Carbon facade’ını Blade şablonlarında aşağıdaki gibi kullanabilirsiniz:

Carbon\Carbon::now();

“Carbon" eklentisine dikkat !


Etiketler: