lostyazilim
tr.link

PHP ile yaş hesaplama

10 Mesajlar 4.866 Okunma
acebozum
tr.link

AJAN53 AJAN53 WM Aracı Kullanıcı
  • Üyelik 15.11.2013
  • Yaş/Cinsiyet 33 / E
  • Meslek ASP Hastası
  • Konum Rize
  • Ad Soyad A** K**
  • Mesajlar 419
  • Beğeniler 50 / 79
  • Ticaret 6, (%100)
iyi akşamlar bir konuda yardımcı olur musunuz.PHP ye yeni başladım.

veritabanında bulunan "YYYY-AA-GG" formatında doğum tarihleri yer alıyor..

X kişini doğum tarihi var birden fazla yani..


bu doğum tarihini alıp gun ay ve yıl baz alıp kaç yaşında olduğunu tespit etmem ve bu yaş ı bir değişkene atmam gerekiyor..

javascript ile yaptım ama onu php değişkenine atamıyorum..


netteki örneklerde sadece yıl baz alıp hesaplama yapılmış ve function ile yaptığımda birden fazla değer olduğu için bir türlü çözemdim.

bu konuda yardımcı olurmusunuz.
şimdiden cevap yazanlara teşekkür ederim.
 

 

elektronikssl
webimgo

MuhammedArslan MuhammedArslan Msa Web Tasarım Kullanıcı
  • Üyelik 19.02.2017
  • Yaş/Cinsiyet 24 / E
  • Meslek Web Developer
  • Konum Bursa
  • Ad Soyad M** A**
  • Mesajlar 933
  • Beğeniler 136 / 276
  • Ticaret 11, (%100)
Önce strtotime ile elindeki tarihi unix zaman biçimine çevir. Sonra time(); fonksiyonu ile şimdiki zamanı al. Şimdiki zamandan ilk zamanı çıkarıp doğduğu günden şuana kadar geçen saniyeyi bulmuş olursun. Artık ondan sonra istedigin veriye cevirirsin :)
AJAN53 berkaycatak

kişi bu mesajı beğendi.

Guness Guness Gün olur, asra bedel. Kullanıcı
  • Üyelik 10.09.2018
  • Yaş/Cinsiyet 19 / E
  • Meslek Hayat boyu öğrenci.
  • Konum İstanbul Avrupa
  • Ad Soyad B** G**
  • Mesajlar 868
  • Beğeniler 335 / 181
  • Ticaret 41, (%100)
Böyle bir site kurmak mantıklı bence. Bugün bende denedim, sadece gebelikle ilgili şeyler çıktı arama yaptığımda.
 

 

Dönülmez akşamın ufkundayız, vakit çok geç.

xsafa xsafa Developer Kullanıcı
  • Üyelik 01.08.2016
  • Yaş/Cinsiyet 24 / E
  • Meslek Bilgisayar Müh. Öğr.
  • Konum Erzurum
  • Ad Soyad S** Y**
  • Mesajlar 1534
  • Beğeniler 1234 / 463
  • Ticaret 19, (%100)
hocam explode fonksiyonuyla şöyle bir şey yapabilirsiniz



date_default_timezone_set('Europe/Istanbul');
$dogumtarih="2000-09-05"; // Doğum tarihi
$bol=explode("-", $dogumtarih); // tarih değişkenini explode ile böldük $bol[0] bize yıl değerini verecek
$yas=date('Y')-$bol[0]; //date('Y') -> Güncel tarihe ait yılı verir.
echo "Yaşınız: ".$yas;


$dogumtarih değişkenine databaseden verileri çekmeniz gerekecek birde en üstteki date_default_timezone_set fonksiyonunu eklemeyi unutmayın yoksa $yas değişkenindeki date fonksiyonu çalışmayacaktır.
 

 

Yazılım işleriniz için -> contact@safayasar.com
wmaraci
wmaraci

xsafa xsafa Developer Kullanıcı
  • Üyelik 01.08.2016
  • Yaş/Cinsiyet 24 / E
  • Meslek Bilgisayar Müh. Öğr.
  • Konum Erzurum
  • Ad Soyad S** Y**
  • Mesajlar 1534
  • Beğeniler 1234 / 463
  • Ticaret 19, (%100)
Sisteminiz php üzerineyse isterseniz yardım edebilirim boş vaktim var.
 

 

Yazılım işleriniz için -> contact@safayasar.com

AJAN53 AJAN53 WM Aracı Kullanıcı
  • Üyelik 15.11.2013
  • Yaş/Cinsiyet 33 / E
  • Meslek ASP Hastası
  • Konum Rize
  • Ad Soyad A** K**
  • Mesajlar 419
  • Beğeniler 50 / 79
  • Ticaret 6, (%100)

xsafa adlı üyeden alıntı

Sisteminiz php üzerineyse isterseniz yardım edebilirim boş vaktim var.


yok hocam php öğrenmek için kurcalıyorum da takıldım burda..
php ile deneme sitesi yapıyorum localhostta

sizin verdiğiniz kod ile sanırım gün ve ay baz alınmamış
 

 

xsafa xsafa Developer Kullanıcı
  • Üyelik 01.08.2016
  • Yaş/Cinsiyet 24 / E
  • Meslek Bilgisayar Müh. Öğr.
  • Konum Erzurum
  • Ad Soyad S** Y**
  • Mesajlar 1534
  • Beğeniler 1234 / 463
  • Ticaret 19, (%100)
AJAN53 evet hocam gün ve ay baz alınmamış bu videoya bakabilirsiniz: https://www.youtube.com/watch?v=rlmTVWS60lA
 

 

Yazılım işleriniz için -> contact@safayasar.com

AJAN53 AJAN53 WM Aracı Kullanıcı
  • Üyelik 15.11.2013
  • Yaş/Cinsiyet 33 / E
  • Meslek ASP Hastası
  • Konum Rize
  • Ad Soyad A** K**
  • Mesajlar 419
  • Beğeniler 50 / 79
  • Ticaret 6, (%100)

MuhammedArslan adlı üyeden alıntı

Önce strtotime ile elindeki tarihi unix zaman biçimine çevir. Sonra time(); fonksiyonu ile şimdiki zamanı al. Şimdiki zamandan ilk zamanı çıkarıp doğduğu günden şuana kadar geçen saniyeyi bulmuş olursun. Artık ondan sonra istedigin veriye cevirirsin :)


date_default_timezone_set('Europe/Istanbul');

$dogumtarihi = "1991-01-06"; // VERİTABANINDAN TARİH ÇEK
$yasabak = explode ("-",$dogumtarihi); // TARİH ARASINI TEMİZLE

$yil = $yasabak[0]; // YIL
$ay = $yasabak[1]; // AY
$gun = $yasabak[2]; // GÜN

$bugun = time(); // ŞUANKİ TARİH SANİYE CİNSİNDEN
$gecmis = mktime(00, 00, 00, $ay, $gun, $yil); // DOĞUM TARİHİ SANİYE CİNSİNDEN

$fark = $bugun - $gecmis; // KAÇ SANİYEDİR HAYATTASIN



$yilkacsaniye=365*24*60*60; // 1 YIL KAÇ SANİYE
$eksaat=6; // 1 YIL 365 GÜN 6 SAAT İSE 6 SAATİ HESABA DAHİL ET - İSTEMİYORSANIZ 0 YAZ..
$yileksaat=$eksaat*60*60; // EK 6 SAATİ HESAPLAYIP SANİYEYE ÇEVİRDİK

$birgunkacsaniye = 24*60*60; // BİR GÜN KAÇ SANİYE EDER.

$biryilkacsaniyeeder = $yilkacsaniye + $yileksaat ; // 365 GÜN + 6 SAATİN SANİYELERİ TOPLANDI


$yascek = floor($fark/$biryilkacsaniyeeder); // YIL HESAPLADIK
$kalansaniye =$fark%$biryilkacsaniyeeder; // mod ile EKSTRA KALAN GÜNÜ ÇIKARDIK
$gunhesap =floor($kalansaniye / $birgunkacsaniye); // VİRGÜNDEN SONRASINI GÖRME :)

echo "
";
echo $yascek . ' yıl ';
echo $gunhesap . ' gün ';

?>


dediğiniz şekilde yapmaya çalıştım . oldu gibi sanki..

birde yaş hesaplarken 365 gün olarak hesapladıgımızda 6-7 saat oynama yapıyordu.. 1 yılı bende 365 gün 6 saat olarak aldım..

Kodlamada hata varmı sizce
 

 

wpuzman wpuzman WordPress Developer Kullanıcı
  • Üyelik 13.01.2017
  • Yaş/Cinsiyet 33 / E
  • Meslek Yazılım
  • Konum Trabzon
  • Ad Soyad B** M**
  • Mesajlar 2771
  • Beğeniler 293 / 949
  • Ticaret 33, (%100)
Stackoverflowda şöyle bir örnek var. Güzel çalışıyor.


//date in mm/dd/yyyy format; or it can be in other formats as well
$birthDate = "12/17/1983";
//explode the date to get month, day and year
$birthDate = explode("/", $birthDate);
//get age from date or birthdate
$age = (date("md", date("U", mktime(0, 0, 0, $birthDate[0], $birthDate[1], $birthDate[2]))) > date("md")
? ((date("Y") - $birthDate[2]) - 1)
: (date("Y") - $birthDate[2]));
echo "Age is:" . $age;
?>


Buradan test edebilirsiniz. Konu linki.

Daha gelişmiş bir örnek içinse github örneği. Basit bir google araması ile karşıma çıkan sonuçlar :)
 

 

AJAN53 AJAN53 WM Aracı Kullanıcı
  • Üyelik 15.11.2013
  • Yaş/Cinsiyet 33 / E
  • Meslek ASP Hastası
  • Konum Rize
  • Ad Soyad A** K**
  • Mesajlar 419
  • Beğeniler 50 / 79
  • Ticaret 6, (%100)

bilimokur adlı üyeden alıntı

Stackoverflowda şöyle bir örnek var. Güzel çalışıyor.


//date in mm/dd/yyyy format; or it can be in other formats as well
$birthDate = "12/17/1983";
//explode the date to get month, day and year
$birthDate = explode("/", $birthDate);
//get age from date or birthdate
$age = (date("md", date("U", mktime(0, 0, 0, $birthDate[0], $birthDate[1], $birthDate[2]))) > date("md")
? ((date("Y") - $birthDate[2]) - 1)
: (date("Y") - $birthDate[2]));
echo "Age is:" . $age;
?>


Buradan test edebilirsiniz. Konu linki.

Daha gelişmiş bir örnek içinse github örneği. Basit bir google araması ile karşıma çıkan sonuçlar :)


dediğiniz kodlama hocam 11/01/1991 27 yas olması lazım değil mi..

10/01/1991 de 28 olması lazım ama ikiside 27 gösteriyor
 

 

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