Calculate average date difference of multiple rows

I need to calculate the average of the date difference of all of my rows in dataGridView.

I implemented NodaTime (which is far more easy than the traditional methods to calculate date difference) and, I did this just to try out:

var date1 = new LocalDate(2013, 1, 29);
var date2 = new LocalDate(2018, 1, 23);
Period period = Period.Between(date1, date2.PlusDays(1));
label1.Text = string.Format("{0} anos, {1} meses e {2} dias", period.Years, 
period.Months, period.Days);

Now, what I do to get both dates of the dataGridView, calculate in each row the date difference and with all calculate the average? I want it to show in years, months and days. Thanks.

Jon Skeet

Unfortunately there's no real concept of an average of Period values, as they're not even directly comparable. For example, is "1 month" longer or shorter than "29 days"? It depends on the month. Moving to an average, what's the of the two periods "1 month" and "29 days"? There's nothing really obvious as a useful answer to that question, IMO.

What you could do is get the difference just in days (probably using Period.Between and specifying PeriodUnits.Days) - then find the average number of days. That makes logical sense and is a lot more easily defined than the average of years/months/days.


See more on this question at Stackoverflow