Yazılım.
CevapSitesi.com Beta!
Çözüm Noktası
Facebook, Twitter, Google+ veya e-posta ile paylaşın.
| Sorular | Makaleler | Üyeler | Etiketler  | İletişim
Soru sormak ya da cevap vermek için;
giriş yapın veya üye olun.

Sosyal medya hesaplarınızla da giriş yapabilirsiniz.
0

İki tarih arası fark hesaplarken 29 Şubat sorunu

İki tarih arasındaki farkı şu şekilde hesaplıyorum.
...TimeSpan verilensüresayı;

            verilensüresayı = (Convert.ToDateTime(dt2.Text) - Convert.ToDateTime(dt1.Text));
                       
            fark = Convert.ToInt32(verilensüresayı.TotalDays);
            yil = fark / 365;
            ay = (fark - (yil * 365)) / 30;
            gun = (fark - (yil * 365) - (ay * 30));

ama şubat ayının 29 çektiği günlerde bir yılı 366 gün aldığı için istediğim sonucu alamıyorum.

bir yıl maksimum 365 gün olmalı.

Teşekkürler


Soran: 27.12.19 12:20
hakandogan
310p 32ü

1 Cevap

0
Ben çözümü başka bir forumda buldum. Buradan da paylaşayım. Belki birileri kullanır.

...void trhHesap()
        {
            string dt1Text = dt1.Text;
            string dt2Text = dt2.Text;

            if (DateTime.TryParse(dt1Text, out DateTime ilkTarih) && DateTime.TryParse(dt2Text, out DateTime sonTarih))
            {
                var (y, m, d) = CalculateAge(ilkTarih, sonTarih);

                txtYil.Text = y.ToString();
                txtAy.Text = m.ToString();
                txtGun.Text = d.ToString();
            }
        }

        private (int, int, int) CalculateAge(DateTime baslangic, DateTime end)
        {
            int years = 0;
            int months = 0;

            while (baslangic.AddYears(years + 1) <= end)
            {
                years++;
            }
            while (baslangic.AddYears(years).AddMonths(months + 1) <= end)
            {
                months++;
            }
            int days = (int)(end - baslangic.AddYears(years).AddMonths(months)).TotalDays;

            return (years, months, days);
        }

kolay gelsin


Cevaplayan: 27.12.19 15:14
hakandogan
310p 32ü
Cevabı seçen: 27.12.19 18:14
hakandogan   310p 32ü