在ASP.NET中找到10月的最后一个星期日c#

Hii,有没有什么方法可以找到ASP.NET中我昨天使用的10月的最后一个星期日的日期.net 2.0

没有必要为此运行循环:

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()); 

我把它打开了,所以你可以很容易地用一个参数换掉月份。

抱歉

 DateTime lastDayOfMonth = new DateTime(date.Year, date.Month, 1) .AddMonths(1).AddDays(-1); 

是错的!

 => DateTime lastDayOfMonth = new DateTime(aYear, aMonth, DateTime.DaysInMonth(aYear, aMonth));