• 18-11-2022, 09:42:12
    #1
    Merhabalar. Elimde php ile yazılmış 2 tarihi birbirinden çıkaran bir işlem var fakat istediğim sonucu vermiyor.
    İstiyorum ki şu https://prnt.sc/l_iyqzpvxJmc işlemdeki gibi aynı tarihleri yazınca bana " 4 Yıl 7 Ay 1 Gün " değerini versin fakat localimde bana " 4 yıl 6 ay 30 gün " Değerini veriyor.
    Sanırım iki tarihi birbirinden çıkartmak yerine iki tarihin arasındaki süreyi buldurduğu için bunu yapıyor.
    Peki bu durumda ne yapmalıyım?

    //Giris Tarihi
    $gun = 01;
    $ay = 01;
    $yil = 2012;
     
    // Çıkış Tarihi
    $guncikis = 31;
    $aycikis = 07;
    $yilcikis = 2016;
     
    // Custom Zaman Dilimi
    $iseGirisTarihi = date(' '.$gun.'-'.$ay.'-'.$yil.' ');
    $istenCikisTarihi = date(' '.$guncikis.'-'.$aycikis.'-'.$yilcikis.' ');
     
    //  Yılı Hesaplat
    $calisilanYil = strtotime('- '.$gun.' day, - '.$ay.' month, - '.$yil.' year',strtotime($istenCikisTarihi));
    echo $calisilanYil = date('y' ,$calisilanYil);
     
    //  Ayı Hesaplat
    $calisilanAy = strtotime('- '.$gun.' day, - '.$ay.' month, - '.$yil.' year',strtotime($istenCikisTarihi));
    echo $calisilanAy = date('m' ,$calisilanAy);
     
    // Günü Hesaplat
    $calisilanGun = strtotime('- '.$gun.' day, - '.$ay.' month, - '.$yil.' year',strtotime($istenCikisTarihi));
    echo $calisilanGun = date('d' ,$calisilanGun);
  • 18-11-2022, 10:30:23
    #2
    Şöyle bir fonksiyon yazdım senin işini görecektir.

    function farkHesapla($baslangicTarihi, $bitisTarihi) {
    
    $baslangicTarihi = date("d.m.Y", strtotime('-1 day',strtotime($baslangicTarihi)));
    $bitisTarihi = date("d.m.Y", strtotime('+1 day',strtotime($bitisTarihi)));
    
    $baslangic = new Datetime($baslangicTarihi);
    $bitis = new Datetime($bitisTarihi);
    
    $interval = $bitis->diff($baslangic);
    
    $yil = $interval->y;
    $ay = $interval->m;
    $gun = $interval->d;
    
    return $yil . " Yıl " . $ay . " Ay " . $gun . " Gün";
    
    }
    
    // Kullanımı
    $hesap = farkHesapla("01.01.2012", "31.07.2016");
    
    // Çıktı (array)
    // 4 Yıl 7 Ay 1 Gün
  • 18-11-2022, 10:30:52
    #3
    omergunay adlı üyeden alıntı: mesajı görüntüle
    İki tarih arasındaki farkı bulmak için şöyle bir fonksiyon kullanabilirsin. Günleri dahil etmek için bir gün öncesini alabilirsin veya sonuca 2 ekleyebilirsin.

    function farkHesapla($baslangicTarihi, $bitisTarihi) {
    
    $baslangic = new Datetime($baslangicTarihi);
    $bitis = new Datetime($bitisTarihi);
    
    $interval = $bitis->diff($baslangic);
    
    return $interval;
    
    }
    
    //Kullanımı
    
    $hesap = farkHesapla("01.01.2012",     "31.07.2016");
    // Çıktısı array
    DateInterval Object (    [y] => 4    [m] => 6    [d] => 30    [h] => 0    [i] => 0    [s] => 0    [f] => 0    [weekday] => 0    [weekday_behavior] => 0    [first_last_day_of] => 0    [invert] => 1    [days] => 1673    [special_type] => 0    [special_amount] => 0    [have_weekday_relative] => 0    [have_special_relative] => 0 )
    Merhaba. Peki çıkan sonuçtaki gün ay ve yıl değerini nasıl ayrı değişkenlere alabilirim?
  • 18-11-2022, 10:46:08
    #4
    şu şekilde güncelleyebilirsiniz.

    function farkHesapla($baslangicTarihi, $bitisTarihi) {
    
    $baslangicTarihi = date("d.m.Y", strtotime('-1 day',strtotime($baslangicTarihi)));
    $bitisTarihi = date("d.m.Y", strtotime('+1 day',strtotime($bitisTarihi)));
    
    $baslangic = new Datetime($baslangicTarihi);
    $bitis = new Datetime($bitisTarihi);
    
    $interval = $bitis->diff($baslangic);
    
    return $interval;
    
    }
    
    // Kullanımı
    $hesap = farkHesapla("01.01.2012", "31.07.2016");
    // Çıktı (array)
    DateInterval Object
    (
    [y] => 4
    [m] => 7
    [d] => 1
    [h] => 0
    [i] => 0
    [s] => 0
    [f] => 0
    [weekday] => 0
    [weekday_behavior] => 0
    [first_last_day_of] => 0
    [invert] => 1
    [days] => 1675
    [special_type] => 0
    [special_amount] => 0
    [have_weekday_relative] => 0
    [have_special_relative] => 0
    )
    
    // Yıl için $hesap->y;
    // Ay için $hesap->m;
    // Gün için $hesap-dy;
  • 18-11-2022, 10:50:41
    #5
    omergunay adlı üyeden alıntı: mesajı görüntüle
    şu şekilde güncelleyebilirsiniz.

    function farkhesapla($baslangictarihi, $bitistarihi) {
    
    $baslangictarihi = date("d.m.y", strtotime('-1 day',strtotime($baslangictarihi)));
    $bitistarihi = date("d.m.y", strtotime('+1 day',strtotime($bitistarihi)));
    
    $baslangic = new datetime($baslangictarihi);
    $bitis = new datetime($bitistarihi);
    
    $interval = $bitis->diff($baslangic);
    
    return $interval;
    
    }
    
    // kullanımı
    $hesap = farkhesapla("01.01.2012", "31.07.2016");
    // çıktı (array)
    dateinterval object
    (
    [y] => 4
    [m] => 7
    [d] => 1
    [h] => 0
    [i] => 0
    [s] => 0
    [f] => 0
    [weekday] => 0
    [weekday_behavior] => 0
    [first_last_day_of] => 0
    [invert] => 1
    [days] => 1675
    [special_type] => 0
    [special_amount] => 0
    [have_weekday_relative] => 0
    [have_special_relative] => 0
    )
    
    // yıl için $hesap->y;
    // ay için $hesap->m;
    // gün için $hesap-dy;
    hocam süpersiniz! çok teşşekürler! :d