Вычислить количество месяцев в интервале двух дат - 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;
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5
Похожие ответы