İki Tarih Arasındaki Farkı Bulmak

05 Ağu 2010 Per

Bu fonksiyon ile belirtilen iki tarih arasındaki farkı istediğiniz formatta hesaplayabilirsiniz.

Yaptığınız web sayfasında kullanıcıların yaptıkları işlemlerden sonra bir süre işlem yapmalarını engellemek isteyebilirsiniz. Örneğin bir forum sayfanızda kullanıcının aynı başlığı sayfayı yenileyerek açmasını önlemelisiniz. Aksi takdirde veritabanınız gereksiz verilerle dolup taşacaktır.

Bu fonksiyon ile kullanıcının ne kadar beklemesi gerektiğini hesaplatabilir ve bunu kullanıcıya bildirebilirsiniz.

PHP Fonksiyonu:

<?
function tarihfarki($startDate,$endDate,$format = 1)
{
    list($date,$time) = explode(' ',$endDate);
    $startdate = explode(".",$date);
    $starttime = explode(":",$time);

    list($date,$time) = explode(' ',$startDate);
    $enddate = explode(".",$date);
    $endtime = explode(":",$time);

    $secondsDifference = mktime($endtime[0],$endtime[1],$endtime[2],
        $enddate[1],$enddate[2],$enddate[0]) - mktime($starttime[0],
            $starttime[1],$starttime[2],$startdate[1],$startdate[2],$startdate[0]);
    
    switch($format){
        // Dakika olarak fark
        case 1:
            return floor($secondsDifference/60);
        // Saat olarak fark
        case 2:
            return floor($secondsDifference/60/60);
        // Gün olarak fark
        case 3:
            return floor($secondsDifference/60/60/24);
        // Hafta olarak fark
        case 4:
            return floor($secondsDifference/60/60/24/7);
        // Ay olarak fark
        case 5:
            return floor($secondsDifference/60/60/24/7/4);
        // Yıl olarak fark   
        default:
            return floor($secondsDifference/365/60/60/24);
    }                
}
?>

Kullanımı:

<?

echo $tarihfarki("2010.08.04 19:20:24","2010.08.04 19:23:24");

// Çıktı olarak 3'ü göreceksiniz.

?>

Tarih ayracı olarak ".", saat ayracı olarak ise ":" işaretini seçtim. Veritabanınızda farklı şekilde kayıt yapıyorsanız fonksiyonda ilgili yerlerdeki explode(); komutlarında değişiklik yapmalısınız.

Burada farkı dakika olarak aldık. İsterseniz fonksiyondaki $format = 1 değerini değiştirerek yıl, ay, hafta, gün ve saat olarak da alabilirsiniz. Format değerlerine karşılık gelen rakamlar fonksiyon içersinde yer alıyor. Örneğin hafta için $format = 4 olarak değiştirmelisiniz.

21379 kez okundu.

Yorum Yazın