none
Windows Form Application, Yaş Hesaplama C# RRS feed

  • Soru

  • Merhaba arkadaşlar, bir sorum olacaktı.

    Şimdi ben C# Windows Form Application'da yaş hesaplama uygulaması yapıyorum.

    Hesapla tuşuna bastığımda, textBox1'e yaşı, textBox2'ye de doğduğu günden bugüne kadar geçen günü yazmak istiyorum.

    Okula hocama sormak isterdim fakat onun bu konular hakkında pek bir şey bildiğini düşünmüyorum. :(

    Bugünün tarihinin nasıl alındığını biliyorum fakat bugünün tarihini alıp dateTimePicker ile işlem yapmayı bilmiyorum.

    Yardımcı olursanız sevinirim.

    10 Mayıs 2019 Cuma 14:41

Yanıtlar

  • textBox1.Text = (DateTime.Now.Subtract(dateTimePicker1.Value).TotalDays / 365).ToString();
    textBox2.Text = (DateTime.Now.Subtract(dateTimePicker1.Value).TotalDays).ToString();

    kusura bakma int lerin stringe atılamayacağını bilmiyordum.

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    13 Mayıs 2019 Pazartesi 14:16
    Moderatör
  • Biraz daha hassas hesap gerekirse:

    DateTime bDate = dateTimePicker1.Value.Date;
    
    var dGun = (bDate.Month == 2 && bDate.Day == 29)
    	? new DateTime(DateTime.Today.Year, 3, 1)
    	: new DateTime(DateTime.Today.Year, bDate.Month, bDate.Day);
    
    var yas =  DateTime.Today.Year - bDate.Year - ((dGun <= DateTime.Today || DateTime.Today.Year == bDate.Year) ? 0 : 1);
    
    textBox1.Text = yas.ToString();
    textBox2.Text = (DateTime.Today-bDate).TotalDays.ToString();


    • Düzenleyen CetinBasozEditor 13 Mayıs 2019 Pazartesi 16:59
    • Yanıt Olarak İşaretleyen YakupSayin 13 Mayıs 2019 Pazartesi 17:33
    13 Mayıs 2019 Pazartesi 16:57
    Yanıtlayıcı

Tüm Yanıtlar

  • textBox1.Text = DateTime.Now.Subtract(dateTimePicker1.Value).TotalDays / 365;
    textBox2.Text = DateTime.Now.Subtract(dateTimePicker1.Value).TotalDays;



    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    • Yanıt Olarak Öneren Mehmet Emin Kaymaz 10 Mayıs 2019 Cuma 17:27
    • Yanıt Olarak İşaretleyen CetinBasozEditor 13 Mayıs 2019 Pazartesi 16:53
    • Yanıt İşaretini Geri Alan YakupSayin 13 Mayıs 2019 Pazartesi 17:33
    • Yanıt Önerisini Geri Alan YakupSayin 13 Mayıs 2019 Pazartesi 17:33
    10 Mayıs 2019 Cuma 14:58
    Moderatör
  • textBox1.Text = DateTime.Now.Subtract(dateTimePicker1.Value).TotalDays / 365;
    textBox2.Text = DateTime.Now.Subtract(dateTimePicker1.Value).TotalDays;



    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    Verdiğiniz kod çalışmıyor, hata veriyor.

    Yardımcı olursanız sevinirim.

                double gün;
                gün = DateTime.Now.Subtract(dateTimePicker1.Value).TotalDays;
                textBox1.Text = (gün / 365).ToString();
                textBox2.Text = gün.ToString();

    Böyle yaptığım zaman oluyor fakat bir sorum var.

    Bunlar double türünde bildiğiniz üzere virgülden sonraki basamakları da gösteriyor. Fakat ben bunu göstermesini istemiyorum.

    Yaşı "13.24" ise "13" göstermesini istiyorum.

    double gün;

    Yerine ;

    int gün;

    yapmayı denedim fakat yine hata verdi.

    int deneme;
    Int32.TryParse(gün, out deneme));
    textBox1.Text = (deneme / 365) . ToString();
    textBox2.Text = denem.ToString();

    yapmayı denedim fakat yine hata verdi.

    Yardımcı olursanız sevinirim. ^^


    • Düzenleyen YakupSayin 13 Mayıs 2019 Pazartesi 13:55 Güncelleme
    13 Mayıs 2019 Pazartesi 13:49
  • textBox1.Text = (DateTime.Now.Subtract(dateTimePicker1.Value).TotalDays / 365).ToString();
    textBox2.Text = (DateTime.Now.Subtract(dateTimePicker1.Value).TotalDays).ToString();

    kusura bakma int lerin stringe atılamayacağını bilmiyordum.

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    13 Mayıs 2019 Pazartesi 14:16
    Moderatör
  • Biraz daha hassas hesap gerekirse:

    DateTime bDate = dateTimePicker1.Value.Date;
    
    var dGun = (bDate.Month == 2 && bDate.Day == 29)
    	? new DateTime(DateTime.Today.Year, 3, 1)
    	: new DateTime(DateTime.Today.Year, bDate.Month, bDate.Day);
    
    var yas =  DateTime.Today.Year - bDate.Year - ((dGun <= DateTime.Today || DateTime.Today.Year == bDate.Year) ? 0 : 1);
    
    textBox1.Text = yas.ToString();
    textBox2.Text = (DateTime.Today-bDate).TotalDays.ToString();


    • Düzenleyen CetinBasozEditor 13 Mayıs 2019 Pazartesi 16:59
    • Yanıt Olarak İşaretleyen YakupSayin 13 Mayıs 2019 Pazartesi 17:33
    13 Mayıs 2019 Pazartesi 16:57
    Yanıtlayıcı
  • Biraz daha hassas hesap gerekirse:

    DateTime bDate = dateTimePicker1.Value.Date;
    
    var dGun = (bDate.Month == 2 && bDate.Day == 29)
    	? new DateTime(DateTime.Today.Year, 3, 1)
    	: new DateTime(DateTime.Today.Year, bDate.Month, bDate.Day);
    
    var yas =  DateTime.Today.Year - bDate.Year - ((dGun <= DateTime.Today || DateTime.Today.Year == bDate.Year) ? 0 : 1);
    
    textBox1.Text = yas.ToString();
    textBox2.Text = (DateTime.Today-bDate).TotalDays.ToString();


    Bu işlerde yeniyim de "var" ne işe yarıyor? Ve ;

    var yas =  DateTime.Today.Year - bDate.Year - ((dGun <= DateTime.Today || DateTime.Today.Year == bDate.Year) ? 0 : 1);

    Bu kod satırında ne yaptığınızı söyleyebilir misiniz?

    13 Mayıs 2019 Pazartesi 17:34
  • Hmm, yeniyim derken, ilk günüm demek istedin sanırım.

    var C#'ta daha ilk gun öğrenmen gereken implicity typed variable - otomatik tiplenen değişken.

    var sayi = 3;

    int sayi = 3;

    ornegin, ayni sey. Ilkinde senin yerine int olarak belirleniyor.

    var yas =  DateTime.Today.Year - bDate.Year - 
      ((dGun <= DateTime.Today || DateTime.Today.Year == bDate.Year) ? 0 : 1);
     

    Bugunun senesinden, dogum gununun senesini cikariyoruz once (2019-1990 gibi). Sonra, dGun'e bakiyoruz, dGun (bu yılki dogum günü) gelmediyse ya da dogum yılı bu yıl ise 0, yoksa 1 yıl daha cikariyoruz. Ornegin:

    10 Ekim 2000 dogumlu. dGun 10 Ekim 2019 olacak. O zaman:

    (2019 - 2000) - (dGun Ekimde, daha gelmemiş - 1) = 18

     

    13 Mayıs 2019 Pazartesi 17:43
    Yanıtlayıcı