03Nis
PHP ile İki Tarih Arasındaki Gün Farkını Bulma
PHP ile iki tarih arasındaki gün farkını bulmanın en kolay yolu PHP nin date_diff fonksiyonunu kullanmak olacaktır.
PHP ile iki tarih arasındaki zaman farkını almak için aşağıdaki kod kümesini inceleyebilirsiniz. Burdan yola çıkarak kendi yazılımınızda kullanabilirsiniz.
$tarih1= new DateTime('2017-06-01'); $tarih2= new DateTime('2017-06-29'); $interval= $tarih1->diff($tarih2); echo $interval->format('%a gün farkı var.');
Bu komutun basit örneği ile başlayalım :
<?php
$date1 = date_create("2019-01-15");
$date2 = date_create("2018-12-18");
echo date_diff($date1,$date2);
?>
Burada iki tarih arası farkı bulur ve ekrana basarız.
Bu farkı format ile saat, gün, ay olarak istediğimiz gibi ele alabiliriz.
Biz bir örnekle gün olarak ele alıp + veya – durumuna göre geçti veya kaldıyı hesaplayıp ekrana basalım.
<?php
$bitis = date_create("2019-01-15");
$baslangic = date_create("2011-12-18");
$cikar = date_diff($baslangic,$bitis);
$gun = $cikar->format("%R%a");
if ($gun >= 1) {
$ek = "gün kaldı";
} else {
$ek = "gün geçti";
};
echo $gun . " " . $ek;
?>
Bunun sonucu ekrana 36 gün kaldı şeklinde olacaktır.
Burada formatı istediğimiz formatte ele alabilmek için aşağıdaki tablodan faydalanabilirsiniz.
Karakter | Açıklama | Örnek değerler |
---|---|---|
% | % iminin kendisi | % |
Y | Başına 0 getirilerek iki haneli yıl | 01, 03 |
y | 0 ile öncelenmeksizin yıl | 1, 3 |
M | Başına 0 getirilerek iki haneli ay | 01, 03, 12 |
m | 0 ile öncelenmeksizin ay | 1, 3, 12 |
D | Başına 0 getirilerek iki haneli ayın günü | 01, 03, 31 |
d | 0 ile öncelenmeksizin ayın günü | 1, 3, 31 |
a | DateTime::diff()’in sonucu olarak toplam gün sayısı, aksi takdirde (unknown) | 4, 18, 8123 |
H | Başına 0 getirilerek iki haneli saat | 01, 03, 23 |
h | 0 ile öncelenmeksizin saat | 1, 3, 23 |
I | Başına 0 getirilerek iki haneli dakika | 01, 03, 59 |
i | 0 ile öncelenmeksizin dakika | 1, 3, 59 |
S | Başına 0 getirilerek iki haneli saniye | 01, 03, 57 |
s | 0 ile öncelenmeksizin saniye | 1, 3, 57 |
F | Baştan 0 ile doldurulmuş en az 6 hanelik sayısal microsaniye. | 007701, 052738, 428291 |
f | Sayısal olarak mikrosaniye | 7701, 52738, 428291 |
R | Negatifse “–“, pozitifse “+” imi | –, + |
r | Negatifse “–“, pozitifse boş dizge | –, |
Umarım faydalı bir makale olmuştur.