Yazılım.
CevapSitesi.com Beta!
Çözüm Noktası
Bu siteyi 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.
  1. ...TimeSpan verilensüresayı;
  2.  
  3. verilensüresayı = (Convert.ToDateTime(dt2.Text) - Convert.ToDateTime(dt1.Text));
  4. fark = Convert.ToInt32(verilensüresayı.TotalDays);
  5. yil = fark / 365;
  6. ay = (fark - (yil * 365)) / 30;
  7. 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.

  1. ...void trhHesap()
  2. {
  3. string dt1Text = dt1.Text;
  4. string dt2Text = dt2.Text;
  5.  
  6. if (DateTime.TryParse(dt1Text, out DateTime ilkTarih) && DateTime.TryParse(dt2Text, out DateTime sonTarih))
  7. {
  8. var (y, m, d) = CalculateAge(ilkTarih, sonTarih);
  9.  
  10. txtYil.Text = y.ToString();
  11. txtAy.Text = m.ToString();
  12. txtGun.Text = d.ToString();
  13. }
  14. }
  15.  
  16. private (int, int, int) CalculateAge(DateTime baslangic, DateTime end)
  17. {
  18. int years = 0;
  19. int months = 0;
  20.  
  21. while (baslangic.AddYears(years + 1) <= end)
  22. {
  23. years++;
  24. }
  25. while (baslangic.AddYears(years).AddMonths(months + 1) <= end)
  26. {
  27. months++;
  28. }
  29. int days = (int)(end - baslangic.AddYears(years).AddMonths(months)).TotalDays;
  30.  
  31. return (years, months, days);
  32. }

kolay gelsin


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

Bir cevap yazın: