Вычислить количество месяцев в интервале двух дат - 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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д