Поскольку в большинстве целей любой будет работать, и RSS имеет преимущество того, чтобы быть акронимом, который определяет категорию.
Кроме того необходимо было бы послать отдельные сайты по электронной почте и спросить их.
Для этого нет необходимости запускать цикл:
private static DateTime GetLastWeekdayOfMonth(DateTime date, DayOfWeek day)
{
DateTime lastDayOfMonth = new DateTime(date.Year, date.Month, 1)
.AddMonths(1).AddDays(-1);
int wantedDay = (int)day;
int lastDay = (int)lastDayOfMonth.DayOfWeek;
return lastDayOfMonth.AddDays(
lastDay >= wantedDay ? wantedDay - lastDay : wantedDay - lastDay - 7);
}
Его можно легко преобразовать в метод расширения, например:
public static class DateTimeExtensions
{
public static DateTime GetLastWeekdayOfMonth(this DateTime date, DayOfWeek day)
{
DateTime lastDayOfMonth = new DateTime(date.Year, date.Month, 1)
.AddMonths(1).AddDays(-1);
int wantedDay = (int)day;
int lastDay = (int)lastDayOfMonth.DayOfWeek;
return lastDayOfMonth.AddDays(
lastDay >= wantedDay ? wantedDay - lastDay : wantedDay - lastDay - 7);
}
}
... и затем использовать его непосредственно из любой объект DateTime:
DayOfWeek lastSunday = DateTime.Now.GetLastWeekdayOfMonth(DayOfWeek.Sunday);
Обновление: исправлена ошибка.
Вы можете попробовать что-то вроде этого
DateTime date = new DateTime(2009, 10, 01);
date = date.AddMonths(1).AddDays(-1);
while (date.DayOfWeek != DayOfWeek.Sunday) date = date.AddDays(-1);
или также попробовать
date = date.AddDays(-(int)date.DayOfWeek);
DateTime current = new DateTime(DateTime.Today.Year,
10, DateTime.DaysInMonth(DateTime.Today.Year, 10));
while (current.DayOfWeek != DayOfWeek.Sunday)
{
current = current.AddDays(-1);
}
Console.WriteLine(current.ToLongDateString());
Я оставил его открытым, чтобы вы могли легко поменять месяц с параметром.