Bazen bir verinin kayıt tarihleri arasındaki tarih farkını bulmak isteyebilirsiniz. Bu veriler otoparktaki bir aracın kalma süresi, bir ürünün taksit miktarı, kütüphaneden alınan bir kitabın ceza süresi vb. şekilde kayıtlar olabilir. İşte bu yazıda iki tarih arasındaki farkı nasıl hesaplayacağımız göstereceğim.
Artık bütün sunucularda PHP >=5.3 üzeri sürümler kullanılmakta, aşağıdaki gibi bir DateInterval nesnesi döndüren DateTime diff’i kullanabilirsiniz.
Aşağıdaki örnek kodda iki tarih arasındaki farkı gösteren DateInterval nesnesi görünmektedir.
1 2 3 4 5 6 7 8 | <?php echo "<pre>"; $d1 = new DateTime("2015-12-09 10:14:25"); $d2 = new DateTime("2020-03-17 12:10:20"); var_dump($d1->diff($d2)); |
Çıktı:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | object(DateInterval)#3 (16) { ["y"]=> int(4) ["m"]=> int(3) ["d"]=> int(8) ["h"]=> int(1) ["i"]=> int(55) ["s"]=> int(55) ["f"]=> float(0) ["weekday"]=> int(0) ["weekday_behavior"]=> int(0) ["first_last_day_of"]=> int(0) ["invert"]=> int(0) ["days"]=> int(1560) ["special_type"]=> int(0) ["special_amount"]=> int(0) ["have_weekday_relative"]=> int(0) ["have_special_relative"]=> int(0) } |
Yukarıdaki örnekte faydalanarak d,m,y özelliklerini kullanarak gün, ay ve yıl farklarını bulabiliriz.
Örnekler
Örnek: İki tarih arasındaki gün, ay ve yıl farklarını yazdırma
1 2 3 4 5 6 7 8 9 10 | <?php $d1 = new DateTime("2015-12-09"); $d2 = new DateTime("2020-03-17"); echo "Yıl Farkı: ". $d1->diff($d2)->y ."<br>"; echo "Ay Farkı: ". $d1->diff($d2)->m ."<br>"; echo "Gün Farkı: ". $d1->diff($d2)->d ."<br>"; |
Çıktı:
1 2 3 4 5 | Yıl Farkı: 4 Ay Farkı: 3 Gün Farkı: 8 |
Örnek: format metodu kullanarak tarih farkını ekranda gösterme
1 2 3 4 5 6 7 8 9 | <?php $d1 = new DateTime("2015-10-05 10:10:25"); $d2 = new DateTime("2021-11-10 08:15:30"); $interval = $d2->diff($d1); echo $interval->format("%Y yıl, %M ay, %D gün, %H saat, %I dakika, %S saniye"); |
Çıktı:
1 2 3 | 06 yıl, 01 ay, 04 gün, 22 saat, 05 dakika, 05 saniye |
Örnek : Php iki tarih arasındaki gün farkı hesaplamak için days özelliği kullanılmaktadır..
1 2 3 4 5 6 7 8 | <?php $d1 = new DateTime("2015-12-09"); $d2 = new DateTime("2020-03-17"); echo "Gün Farkı: ". $d1->diff($d2)->days; |
Çıktı:
1 2 3 | Gün Farkı: 1560 |
Örnek: Php iki tarih arasındaki saniye farkı hesaplamak için timestaps metodu kullanılabilir. Aşağıdaki örnek iki tarih arasındaki saniye farkını göstermektedir.
1 2 3 4 5 6 7 8 9 10 | <?php echo "<pre>"; $d1 = new DateTime("2020-10-05 10:10:25"); $d2 = new DateTime("2020-10-10 10:10:25"); $saniye_farki = $d2->getTimestamp() -$d1->getTimestamp(); echo $saniye_farki; |
Çıktı:
1 2 3 | 432000 |
Örnek: Php iki tarih arasındaki ay farkı hesaplamak için DateInterval nesnesi kullanılabilir.
1 2 3 4 5 6 7 8 9 10 | <?php echo "<pre>"; $d1 = new DateTime("2020-10-05 10:10:25"); $d2 = new DateTime("2021-11-10 10:10:25"); $diff = $d2->diff($d1); echo "Ay Farkı:".( $diff->y*12 + $diff->m ); |
Çıktı:
1 2 3 | Ay Farkı:13 |
Örnek: Php iki tarih arasındaki yıl farkı hesaplamak
1 2 3 4 5 6 7 8 9 | <?php $d1 = new DateTime("2015-10-05 10:10:25"); $d2 = new DateTime("2021-11-10 10:10:25"); $diff = $d2->diff($d1); echo "Yıl Farkı:".( $diff->y ); |
Çıktı:
1 2 3 | Yıl Farkı:6 |
Örnek: İleri tarihli bir kayıt için bugünden başlayarak PHP ile Kalan süre hesaplama yapan örnek uygulama
1 2 3 4 5 6 7 8 9 | <?php $d1 = new DateTime(); //şuan --2021.07.05 $d2 = new DateTime("2030-10-20 08:15:30"); $interval = $d2->diff($d1); echo $interval->format("KALAN SÜRE: %Y yıl, %M ay, %D gün, %H saat, %I dakika, %S saniye"); |
Çıktı:
1 2 3 | KALAN SÜRE: 09 yıl, 03 ay, 14 gün, 12 saat, 35 dakika, 51 saniye |











Yorum Yap