PHP Tarih İşlemi Yardım
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?
Kodum
//Çıkış Tarihinden Çıkarılıcak Tarih
$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);
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (2)
<?php
//Çıkış Tarihinden Çıkarılıcak Tarih
$gun = 01;
$ay = 01;
$yil = 2012;
// Çıkış Tarihi
$gunCikis = 31;
$ayCikis = 07;
$yilCikis = 2016;
// İşe giriş ve çıkış tarihlerini DateTime objeleri olarak oluşturun
$iseGirisTarihi = new DateTime("$yil-$ay-$gun");
$istenCikisTarihi = new DateTime("$yilCikis-$ayCikis-$gunCikis");
// İşe giriş ve çıkış tarihleri arasındaki farkı hesaplayın
$fark = $istenCikisTarihi->diff($iseGirisTarihi);
// Eğer gün değeri 30'a eşitse ay değerini 1 arttır ve gün değerini 1 yap
if ($fark->d == 30) {
$fark->m = $fark->m + 1;
$fark->d = 1; // 1 yada 0 olabilir
}
// Farkı yıl, ay ve gün olarak ekrana yazdırın
echo $fark->y . " Yıl " . $fark->m . " Ay " . $fark->d . " Gün";
// Sonuç: 4 Yıl 6 Ay 30 Gün
// İstenen: 4 Yıl 7 Ay 1 Gün
PHP nin farklı sürümlerinde faklı sonuçlar veriyor, ilginç gerçekten.
https://3v4l.org/mFpnd