Как рассчитать список месяцев в указанном диапазоне дат в UmAlQuraCalendar

Я хочу рассчитать список месяцев в указанном диапазоне дат.

Например:

DateTime StartDate = 24 - 11 - 2014;
DateTime EndDate = 24 - 11 - 2016;

Я хочу рассчитать все месяцы между датой начала и окончания с именами месяцев.


person Salman Ullah Khan    schedule 21.09.2015    source источник
comment
покажи что пробовал?   -  person teo van kot    schedule 21.09.2015
comment
я пробовал методы UmAlQuraCalendar, такие как GetMonthsInYear, но это не помогает, поскольку дает только месяцы указанного года или эпохи.   -  person Salman Ullah Khan    schedule 21.09.2015
comment
и вам нужно создать список месяцев с годом? правильно?   -  person teo van kot    schedule 21.09.2015
comment
мне нужно создать список месяцев между указанным диапазоном дат.   -  person Salman Ullah Khan    schedule 21.09.2015
comment
я имею в виду, в вашем примере у вас есть 2 года, поэтому в вашем списке должно быть 2 сентября или только 1?   -  person teo van kot    schedule 21.09.2015


Ответы (1)


Вот вам статическая функция, которая делает то, что вам нужно:

    public static Dictionary<int, string> MonthsBetween(
        DateTime startDate,
        DateTime endDate)
    {
        DateTime iterator;
        DateTime limit;

        if (endDate > startDate)
        {
            iterator = new DateTime(startDate.Year, startDate.Month, 1);
            limit = endDate;
        }
        else
        {
            iterator = new DateTime(endDate.Year, endDate.Month, 1);
            limit = startDate;
        }

        var dateTimeFormat = CultureInfo.CurrentCulture.DateTimeFormat;
        var result = new Dictionary<int, string>();
        while (iterator <= limit)
        {
            if (!result.Keys.Contains(iterator.Month))
                result.Add(iterator.Month, dateTimeFormat.GetMonthName(iterator.Month));
            iterator = iterator.AddMonths(1);
        }
        return result;
    }

вы можете использовать его следующим образом:

        DateTime startDate = new DateTime(2014, 11, 24);
        DateTime endDate = new DateTime(2016, 11, 24);

        var list = Program.MonthsBetween(startDate, endDate);

Переменная list содержит словарь со значением месяца и именем в соответствии с CultureInfo.CurrentCulture вашей программы.

Я получаю эту функцию из этого ответа и немного изменяю ее.

person teo van kot    schedule 21.09.2015