Вычислить количество месяцев в интервале двух дат - C#
Формулировка задачи:
Всем привет! Возник вот такой вопрос: как сделать чтоб при выборе одной даты с dateTimePicker1 а потом второй с dateTimePicker2 в textbox мне показало количество месацей между датами (допустим я выбрал 1,01,2012 а потом 1,02,2013 и мне показало 23)! Спасибо!
Решение задачи: «Вычислить количество месяцев в интервале двух дат»
textual
Листинг программы
/// <summary>
/// Вычисление точного количества месяцев между датами.
/// <para>Время не учитывается.</para>
/// <para>Конечная дата должна быть больше или равна начальной.</para>
/// </summary>
/// <param name="startDate">Начальная дата периода</param>
/// <param name="endDate">Конечная дата периода</param>
/// <returns>Количество месяцев</returns>
public static int TotalMonths(DateTime startDate, DateTime endDate)
{
DateTime dt1 = startDate.Date, dt2 = endDate.Date;
if (dt1 > dt2) throw new ArgumentException("Начальная дата не может быть больше конечной");
if (dt1 == dt2) return 0;
var m = ((dt2.Year - dt1.Year) * 12)
+ dt2.Month - dt1.Month
+ (dt2.Day >= dt1.Day - 1 ? 0 : -1)//поправка на числа
+ ((dt1.Day == 1 && DateTime.DaysInMonth(dt2.Year, dt2.Month) == dt2.Day) ? 1 : 0);//если начальная дата - 1-е число меяца, а конечная - последнее число, добавляется 1 месяц
return m;
}