C# ile yaş hesaplamak

Gün ve ay hassasiyetinde kişinin doldurduğu yaş üzerinden kaç yaşında olduğunu hesaplatmak istiyorum. Yani direk bugünkü yıldan kişinin doğduğu yılı çıkartmam yeterli olmayacak. C# tarihsel fark alma işlemlerinde TimeSpan mı kullanmalıyım yoksa DateTime kendi içinde gerekli ve yeterli metodları sunuyor mu?

mbologlu

31.07.2019 02:23

Bu soru 1 kez yanıtlandı.

  • 31 Temmuz 2019 10:15
    25

    En kısa yol olmayabilir ama ben şu şekilde düşündüm:

    - Kişinin doğum yılını bugünden çıkart, burası cepte

    - Biten yaş söylenir, kafanız karışıyorsa bebeğin 1 yaşına basması için doğduğu güne kadar 1 yıl geçmesi örneğini düşünebiirsiniz.

    - Kişinin doğduğu ay içinde bulunduğumuz aydan önceyse YA DA aynı aydaysak ama kişinin doğduğu gün bugünden küçükse -> yaşa +1 ekle

    Bugün 31 Temmuz 2019. Dolayısıyla 30 Temmuz 2018'de doğan bir bebek için yaşı bir bulacak (doğum günü dündü), 1 Ağustos için de sıfır bulacak (doğum günü yarın) bir algoritmaya ihtiyacımız var:

    1 Ağustus 2018 için:

    DateTime simdi = DateTime.Now;
    DateTime dogumTarihi = new DateTime(2018,8,1);
    int yas = simdi.Year - dogumTarihi.Year;
    
    if (dogumTarihi.Month > simdi.Month || (simdi.Month == dogumTarihi.Month && dogumTarihi.Day > simdi.Day))
        yas--;
    
    Console.WriteLine(yas);
    // sonuç: 0

    30 Temmuz 2018 için:

    DateTime simdi = DateTime.Now;
    DateTime dogumTarihi = new DateTime(2018,7,30);
    int yas = simdi.Year - dogumTarihi.Year;
    
    if (dogumTarihi.Month > simdi.Month || (simdi.Month == dogumTarihi.Month && dogumTarihi.Day > simdi.Day))
        yas--;
    
    Console.WriteLine(yas);
    // sonuç: 1

     

Bu soruya sadece kayıtlı kullanıcılar yanıt yazabilirler. Yanıt yazmak için lütfen giriş yapınız.

İnternet sitemizdeki deneyiminizi iyileştirmek için çerezler kullanıyoruz. Bu siteye giriş yaparak çerez kullanımını kabul etmiş sayılıyorsunuz. Daha fazla bilgi.