pillinetwork hesabınızla giriş yapın.

Php ile İki Tarih Arasındaki Gün Farkını Bulma

Merhaba arkadaşlar şuan boştayım bişeyler yazayım dedim. Bu yazımda mktime() fonksiyonu kullanarak iki tarih arasındaki gün farkını bulacağız. Evet mktime() fonksiyonunu da bu arada tanımış ve görmüş olacağız.

Devam edelim bakalım…

Php’nin mktime() fonksiyonu kendisine verilen değerlere göre o tarihin unix timestamp cinsinden değerini vermektedir. Yani 01.01.1970 den bu yana kadar geçen süreyi saniye cinsinden vermektedir.

Kullanımına bakalım:

int mktime( int saat, int dakika, int saniye, int ay, int gun, int yil);

mktime fonksiyonu yukarıda da görüldüğü gibi altı adet argüman almakta ve bu aldığı argümanların veri tipi de integerdir yani sadece rakamlardan oluşabilir. Evet şimdi yukarıdaki fonksiyonumuzu kullanarak iki tarih arasındaki gün farkını nasıl alabiliriz ona geçelim.

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
<?php
function fark_bul($tarih1,$tarih2,$ayrac)
{
/**
* Yusuf KOÇ ( Raiden )
* http://www.ysfkc.com
* İki tarih arasındaki gün farkını bulur
*/
list($g1,$a1,$y1) = explode($ayrac,$tarih1);
list($g2,$a2,$y2) = explode($ayrac,$tarih2);
$t1_timestamp = mktime('0','0','0',$a1,$g1,$y1);
$t2_timestamp = mktime('0','0','0',$a2,$g2,$y2);
if ($t1_timestamp > $t2_timestamp)
{
$result = ($t1_timestamp - $t2_timestamp) / 86400;
}
else if ($t2_timestamp > $t1_timestamp)
{
$result = ($t2_timestamp - $t1_timestamp) / 86400;
}
return $result;
}
?>

ark_bul adında bir fonksiyon tanımladık. Şimdi fonksiyonumuzu biraz tanıyalım… Fonksiyonumuz üç adet argüman almaktadır bunlar tarih1, tarih2 ve ayraç. İsimlerinden de anlaşılacağı gibi tarih1 ve tarih2 argümanlarına gün farkını öğrenmek istediğimiz tarihleri belirtiyoruz. Ayraç da ise tarihimizdeki gün ay ve yıl değerlerini ayıran karakteri belirtiyoruz.

Daha sonrasında php’nin list dil yapısını kullanarak explode ile parçalanan verileri gün ay ve yıl olarak ayrı ayrı değişkenlere atıyoruz. İki tarihimizi de parçaladıktan sonra mktime() fonksiyonundan yararlanarak gün ay ve yıl olarak elde ettiğimiz tarihleri unix timestamp zaman mührüne çevirmeye sıra geldi.

Mktime() içindeki geçen üç adet sıfır saatin 00:00:00 olduğunu söylüyor isterseniz siz tam saat dakika ve saniye değerlerini de belirtebilirsiniz.. Evet t1 ve t2 değişkenlerimize iki tarihimizinde timestamp cinsinden değerlerini elde edip depoladıktan sonra if koşullarına geçiyoruz.

İki adet if koşulu kullandım bunun sebebi ise verilen tarihlerin hangisinin büyük ya da hangisinin küçük olduğunu anlamak için çünkü büyükten küçüğü çıkaracağız yoksa elde ettiğimiz gün farkının önünde eksi ( - ) işareti olacaktır :)

Koşullarımız hangi tarih daha büyük ise küçüğü büyükten çıkarıp güne bölüyor.. Fonksiyon içindeki 86400 değeri saniye cinsinden bir günü ifade etmektedir.

Yani:
saniye * dakika * saat ( 60 * 60 * 24 ) = 86400

Neden 86400 saniyeye bölüyoruz gibi bir düşünceniz olabilme ihtimaline karşı açıklık getireyim. Verilen iki tarihin timestamp değerlerini bulup bu değerleri çıkardık ve sonuç olarak elimizde yine saniye cinsinden bir değer elde etmiş olduk. Bu değeri de saniye cinsinden bir güne böldüğümüz de bize gün farkını verecektir.

En son olarak da elde ettiğimiz gün farkını fonksiyondan değer olarak döndürüyoruz..

Kullanımına bir örnek verelim… Örneğimizde yıl başına kaç gün varmış onu öğrenelim…

1
2
3
4
5
6
7
8
<?php
$yilbasi = '01.01.2010';
$bugun = date('d.m.Y');
$gun = fark_bul($yilbasi,$bugun,'.');
echo 'Yıl başına '.$gun.' var';
?>

/* Etiketler: , , */
/* RaidenCeviz yazdı. 24 Nisan 2009 11:40. 2 yorum var */

Yorumlar

Şimdiden belirteyim strtotime ile de yapabilirsiniz aynı şeyi fakat burdaki amac mktime() fonksiyonudur.

Güzel bir bilgilendirme yazısı olmuş teşekkürler Yusuf. Şöyle bir ekleme yapabilirim: çıkan sonuçlar gün olarak dikkate alınacağı için tam sayı olmasında genelde fayda var. Bu nedenle farkların tam sayı kısmını almak daha iyi olacaktır:

1
$result = floor(($t1_timestamp - $t2_timestamp) / 86400);

üye olunpillinetwork sitelerine yorum ekleyebilmek ve daha fazlası için, üye olun ya da giriş yapın.

Bu yazıyı rapor et. Kural dışı içeriğe rastladığınızda editörlerimize rapor ederek müdahale edilmesini sağlayabilirsiniz. (Hangi durumlarda rapor edebilirim?)

Bu site

Nokta ve pilli ortak yapımı olan kodaman.org hep birlikte içerik üretip gelirini yazarları ile paylaştığımız kolektif bir kod yazarları blogudur. Siz de katılabilirsiniz.

pilliilan

son yorumlar

arama

pillinetwork