Geçen süreyi hesaplamaya yarayan csharp kodudur.
public static string GecenSureyiHesapla(DateTime dateTime)
{
DateTime Now = DateTime.Now;
int Years = new DateTime(DateTime.Now.Subtract(dateTime).Ticks).Year - 1;
DateTime PastYearDate = dateTime.AddYears(Years);
int Months = 0;
for (int i = 1; i <= 12; i++)
{
if (PastYearDate.AddMonths(i) == Now)
{
Months = i;
break;
}
else if (PastYearDate.AddMonths(i) >= Now)
{
Months = i - 1;
break;
}
}
int Days = Now.Subtract(PastYearDate.AddMonths(Months)).Days;
int Hours = Now.Subtract(PastYearDate).Hours;
int Minutes = Now.Subtract(PastYearDate).Minutes;
int Seconds = Now.Subtract(PastYearDate).Seconds;
string sonuc = "";
sonuc = String.Format("{0} Yıl {1} Ay {2} Gün {3} Saat {4} Dakika {5} Saniye",
Years, Months, Days, Hours, Minutes, Seconds);
//Dikkat!
//if şartlarını her seferinde && ile birleştirerek yaptık.
//Bunun sebebi de şu: Normalde çalışıyor fakat eğer değerlerden
//birisi bir şekilde sıfıra eşitse eksik sonuç veriyor.
//Bu da yanlış anlaşılmalara sebebiyet verebiliyor.
//Hem her zaman ortaya çıkan bir bug değil,
//hem de kafa karıştıran sonuçlar üretiyor.
//Enteresan bir bug çeşidi.
if (Years == 0)
{
sonuc = String.Format("{0} Ay {1} Gün {2} Saat {3} Dakika {4} Saniye",
Months, Days, Hours, Minutes, Seconds);
}
if (Years == 0 && Months == 0)
{
sonuc = String.Format("{0} Gün {1} Saat {2} Dakika {3} Saniye",
Days, Hours, Minutes, Seconds);
}
if (Years == 0 && Months == 0 && Days == 0)
{
sonuc = String.Format("{0} Saat {1} Dakika {2} Saniye",
Hours, Minutes, Seconds);
}
if (Years == 0 && Months == 0 && Days == 0 && Hours == 0)
{
sonuc = String.Format("{0} Dakika {1} Saniye",
Minutes, Seconds);
}
if (Years == 0 && Months == 0 && Days == 0 && Hours == 0 && Minutes == 0)
{
sonuc = String.Format("{0} Saniye",
Seconds);
}
return sonuc;
//Kaynak
//https://www.c-sharpcorner.com/code/961/how-to-calculate-age-from-date-of-birth-in-c-sharp.aspx
}