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

Jib*_*ian 5 c# asp.net

Hii,有没有什么办法可以找到ASP.NET中的10月的最后一个星期日c#我正在使用.net 2.0

Fre*_*örk 16

没有必要为此运行循环:

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);
}
Run Code Online (Sandbox Code Playgroud)

这可以很容易地转换为扩展方法,如下所示:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

...然后可以直接从任何DateTime对象使用:

DayOfWeek lastSunday = DateTime.Now.GetLastWeekdayOfMonth(DayOfWeek.Sunday);
Run Code Online (Sandbox Code Playgroud)

更新:修复了一个错误.