Как добраться в прошлую пятницу месяца (месяцев) с помощью.NET

У меня есть функция, которая возвращает меня только пятницы от диапазона дат

public static List<DateTime> GetDates(DateTime startDate, int weeks)
{
    int days = weeks * 7;

    //Get the whole date range 
    List<DateTime> dtFulldateRange = Enumerable.Range(-days, days).Select(i => startDate.AddDays(i)).ToList();

    //Get only the fridays from the date range
    List<DateTime> dtOnlyFridays = (from dtFridays in dtFulldateRange
                                    where dtFridays.DayOfWeek == DayOfWeek.Friday
                                    select dtFridays).ToList();
    return dtOnlyFridays;
}

Цель функции: "Список дат от Недельного числа, указанного до StartDate т.е. Если startdate 23-го апреля 2010 и недельное число, равняется 1, то программа должна возвратить даты с 16-го апреля 2010 до startddate".

Я вызываю функцию как:

DateTime StartDate1 = DateTime.ParseExact("20100430", "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);
List<DateTime> dtList = Utility.GetDates(StartDate1, 4).ToList();

Теперь требование изменилось немного. Я должен узнать только прошлые пятницы каждого месяца. Вход к функции останется тем же.

5
задан John Saunders 26 April 2010 в 05:59
поделиться

2 ответа

У вас уже есть список пятниц в указанном диапазоне. Теперь просто запросите это еще раз вот так:

List<DateTime> lastFridays = (from day in fridays
                              where day.AddDays(7).Month != day.Month
                              select day).ToList<DateTime>();

Надеюсь, это поможет.

6
ответ дан 18 December 2019 в 14:43
поделиться

Проверить, в какой день недели первый день следующего месяца горит, затем вычтите достаточно дней, чтобы получить пятницу.

Или, если у вас уже есть список пятниц, верните только те, для которых добавление 7 дней дает дату в следующем месяце.

1
ответ дан 18 December 2019 в 14:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: