lostyazilim
tr.link

Kullanıcının Tam Yaşını Hesaplama

2 Mesajlar 621 Okunma
acebozum
tr.link

viper302 viper302 WM Aracı Kullanıcı
  • Üyelik 09.08.2014
  • Yaş/Cinsiyet 37 / E
  • Meslek Siber Güvenlik Danışmanı
  • Konum İstanbul Anadolu
  • Ad Soyad K** A**
  • Mesajlar 294
  • Beğeniler 19 / 26
  • Ticaret 3, (%100)
Merhaba arkadaşlar elimde 2 tane fonksiyon var amacım kullanıcının yaşını günü gününe hesaplatmak ama bir türlü tam hesaplayamıyorum. Fonksiyonda nasıl bir hata olabilir acaba?


function YasHesapla($tarih){
$tarih = explode('-',$tarih);
$bugun = time();
$gecmis = mktime(0, 0, 0, $tarih[1], $tarih[2], $tarih[0]);
$fark = $bugun - $gecmis;
$dakika = $fark / 60;
$saniye_farki = floor($fark - (floor($dakika) * 60));
$saat = $dakika / 60;
$dakika_farki = floor($dakika - (floor($saat) * 60));
$gun = $saat / 24;
$saat_farki = floor($saat - (floor($gun) * 24));
$yil = floor($gun/365);
$gun_farki = floor($gun - (floor($yil) * 365));
return $yil;
}
function YasHesapla2($tarih){
$tarih = explode('-',$tarih);
$gun= $tarih[2];
$ay=$tarih[1];
$yil=$tarih[0];
$dogumzamani=mktime(00,00,00,$ay,$gun,$yil);
$simdikizaman=time();
$fark=$simdikizaman-$dogumzamani;
$yasanangun=$fark/(60*60*24);
$yasanangun=floor($yasanangun);
$yil = floor($yasanangun/365);
return $yil;
}


Tarih formatı Yıl-Ay-Gün şeklindedir. Kullanıcı bugün 30 yaşındayken (1988-05-08) eğer yarının tarihini veriyorsam 29 yaşında (1988-05-09) göstermesi lazım ama doğru hesaplamıyor. Acaba hatam nedir bilgisi olan varmı?

NOT: Sunucu saat ve tarih her şey düzgün.
 

 

elektronikssl
webimgo

viper302 viper302 WM Aracı Kullanıcı
  • Üyelik 09.08.2014
  • Yaş/Cinsiyet 37 / E
  • Meslek Siber Güvenlik Danışmanı
  • Konum İstanbul Anadolu
  • Ad Soyad K** A**
  • Mesajlar 294
  • Beğeniler 19 / 26
  • Ticaret 3, (%100)
Arkadaşlar şöyle bir fonksiyon ile sorunumu daha basit bir şekilde hallettim ilgilenenler kullanabilir.


function YasHesapla($kayitTarihi){
$kt = new DateTime($kayitTarihi);
$fark = $kt->diff(new DateTime('NOW'));
if($fark->y>0){
return $fark->y;
}
}


NOT: Bu bir üyelik sistemi tarzı bir şey için kullanılacağı için 1 yıldan büyük olan bir tarih girilmesi lazım. Eğer girilen tarih 1 yıldan küçükse değer görünmeyecektir.
worldww

kişi bu mesajı beğendi.

wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al