none
Son Dört Rakamı labele yazdırma RRS feed

  • Soru

  • arkadaşlar veritabanında bulunan doğum tarihlerinin sadece yıl kısmını almak istiyorum sağdan ilk dört rakamı almam için ne yapmalıyım, 

    yapmak istediğim kimlik paylaşım sisteminden alınan doğum tarihini bugünün tarihi ile çıkartıp kişinin yaşını datagride yazdırmam bunla ilgili örnek kod verebilirmisiniz?


    Ömer ÖRNEK

    5 Eylül 2016 Pazartesi 07:29

Yanıtlar

  • Yanlış bir yaklaşım yapıyorsunuz. Madem her iki veri de tarih şu fonksiyonu projene ekleyip kullanabilirsin.

    int Years(DateTime start, DateTime end)
    {
        return (end.Year - start.Year - 1) +
            (((end.Month > start.Month) ||
            ((end.Month == start.Month) && (end.Day >= start.Day))) ? 1 : 0);
    }


    Fullstack Developer

    5 Eylül 2016 Pazartesi 09:18
  •                                     int yas;
                                        DateTime dogum = new DateTime();
                                        TimeSpan fark;
                                        dogum = DateTime.Parse(sonuc.Sonuc.DogumTarihi.ToString()); 
                                        fark = DateTime.Now.Date.Subtract(dogum); 
                                        yas = Convert.ToInt32(fark.TotalDays); 
                                        yas = yas / 365;
                                        lblYas.Text = yas.ToString();
    
    yukarıdaki şekilde sorunu düzelttim, 

    Ömer ÖRNEK

    • Yanıt Olarak İşaretleyen omrornk 5 Eylül 2016 Pazartesi 11:12
    5 Eylül 2016 Pazartesi 11:12

Tüm Yanıtlar

  • Yanlış bir yaklaşım yapıyorsunuz. Madem her iki veri de tarih şu fonksiyonu projene ekleyip kullanabilirsin.

    int Years(DateTime start, DateTime end)
    {
        return (end.Year - start.Year - 1) +
            (((end.Month > start.Month) ||
            ((end.Month == start.Month) && (end.Day >= start.Day))) ? 1 : 0);
    }


    Fullstack Developer

    5 Eylül 2016 Pazartesi 09:18
  • halit bey;

    kişinin yaşını hesaplaması gerekiyor örneğin label1 de doğum tarihi : 1.1.1990 şeklinde, label2 de 5.09.2016 şeklide olsun bunları label2 den label bir çıkarılacak kişinin yaşını 26 olarak vermesi gerekmekte, label1 ve label2 son 4 rakamı yazdırabilirsem olay çözülecek


    Ömer ÖRNEK

    5 Eylül 2016 Pazartesi 10:47
  • Öyle düşünüyorsun da ya ay ve gün farkı ne olacak. Bence benim verdiğim örneğe uygun yap.

    Fullstack Developer

    5 Eylül 2016 Pazartesi 11:10
  •                                     int yas;
                                        DateTime dogum = new DateTime();
                                        TimeSpan fark;
                                        dogum = DateTime.Parse(sonuc.Sonuc.DogumTarihi.ToString()); 
                                        fark = DateTime.Now.Date.Subtract(dogum); 
                                        yas = Convert.ToInt32(fark.TotalDays); 
                                        yas = yas / 365;
                                        lblYas.Text = yas.ToString();
    
    yukarıdaki şekilde sorunu düzelttim, 

    Ömer ÖRNEK

    • Yanıt Olarak İşaretleyen omrornk 5 Eylül 2016 Pazartesi 11:12
    5 Eylül 2016 Pazartesi 11:12
  • Cozdum demissin ama dikkat et dogru olmamis, yas hesabi 365'e bolerek yapilmaz, ay ve gun degerleri kullanilir. Ornegin 1 Ocak 1990'da dogan birisi, 25 Aralik 2016'da 27 yasinda mi olacak?

    5 Eylül 2016 Pazartesi 13:50
    Yanıtlayıcı
  • hayır denedim 26 yaşında görünüyor.

                int yas;
                DateTime dogum = new DateTime();
                TimeSpan fark;
                dogum = DateTime.Parse(label1.Text.ToString());
                fark = DateTime.Now.Date.Subtract(dogum);
                yas = Convert.ToInt32(fark.TotalDays);
                yas = yas / 365;
                label3.Text = yas.ToString();
    


    Ömer ÖRNEK

    6 Eylül 2016 Salı 06:06
  • Akil var mantik var 1/1/1990'dan 365*27 gun sonra yani new DateTime(1990,1,1).AddDays(365*27) = 25 Aralik 2016'da 27 yasinda cikariyor senin yontemin.

    Kod senin, sen kullanacaksin ama yine de dikkat et:


    6 Eylül 2016 Salı 09:15
    Yanıtlayıcı
  • Hic olmazsa daha guvenilir olan bu "numara"yi kullan:

    DateTime dogum;
    if (DateTime.TryParse(label1.Text, out dogum))
    {
    	//var hedef = DateTime.Today;
    	var hedef = new DateTime(2017, 1, 1);
    	var d2 = hedef.Year * 10000 + hedef.Month * 100 + hedef.Day;
    	var d1 = dogum.Year * 10000 + dogum.Month * 100 + dogum.Day;
    
    	int yas = (int)( d2 - d1 )/10000;
    	
    	label3.Text = yas.ToString();
    }


    6 Eylül 2016 Salı 09:31
    Yanıtlayıcı
  • senin vermiş olduğun kod 01.01.1990 doğum lu birini 25.12.2016 tarihinde 27 yaşında gösteriyor 26 olması gerekmiyormu

    Ömer ÖRNEK

    7 Eylül 2016 Çarşamba 08:15
  • Yanlış yapmışsındır şimdi denedim 26 gösteriyor.
    7 Eylül 2016 Çarşamba 10:13
  • Her seferinde resim mi eklemek gerekiyor :)

    7 Eylül 2016 Çarşamba 11:23
    Yanıtlayıcı
  • Haklısınız ben hata yapmışım düzelttim sizin kodunuz projemde kullanacağım ama siz benim yazdığım kodu sizin söylediğiniz gibi denermisiniz ben denedim yine sonuç normal çıktı yani 01.01.1990 ile 25.12.2016 hesaplamasında benim kodundada 26 çıktı

    Ömer ÖRNEK


    • Düzenleyen omrornk 7 Eylül 2016 Çarşamba 13:19
    7 Eylül 2016 Çarşamba 13:17
  • Haklısınız ben hata yapmışım düzelttim sizin kodunuz projemde kullanacağım ama siz benim yazdığım kodu sizin söylediğiniz gibi denermisiniz ben denedim yine sonuç normal çıktı yani 01.01.1990 ile 25.12.2016 hesaplamasında benim kodundada 26 çıktı

    Ömer ÖRNEK


    Hayir 26 cikmiyor, denedim ve yukarida resimli verdim zaten. Sen nasil 26 cikarmayi basardin ben de anlayamadim.
    7 Eylül 2016 Çarşamba 16:21
    Yanıtlayıcı
  • sizin kodunuzu projeye ekledim onu kullanıyorum ama hala ben 26 çıkartıyorum sen 27 çıkartıyorsun bu nasıl oluyor anlamış değilim

    Ömer ÖRNEK

    7 Eylül 2016 Çarşamba 16:48
  • Projen hatali demek ki. Istersen team ID ver (9:30 gibi) bakalim.
    7 Eylül 2016 Çarşamba 17:40
    Yanıtlayıcı
  • Gündüz bakabiliriz evdeki ip kps de tanım değil mesai saatleri arasında olabilir

    Ömer ÖRNEK

    7 Eylül 2016 Çarşamba 18:03