当前位置:  开发笔记 > 编程语言 > 正文

计算一个月的最后一天DayOfWeek

如何解决《计算一个月的最后一天DayOfWeek》经验,为你挑选了3个好方法。

给定DateTime和DayOfWeek应该返回该月的最后一个DayOfWeek的日期.

例如2009年3月1日和周日将于2009年3月29日回归



1> Henk Holterm..:

找不到一个方便的单行,但这个工作:

static DateTime LastDayOfWeekInMonth(DateTime day, DayOfWeek dow)
{
    DateTime lastDay = new DateTime(day.Year, day.Month, 1).AddMonths(1).AddDays(-1);
    DayOfWeek lastDow = lastDay.DayOfWeek;

    int diff = dow - lastDow;

    if (diff > 0) diff -= 7;

    System.Diagnostics.Debug.Assert(diff <= 0);

    return lastDay.AddDays(diff);
}



2> TFD..:

http://datetimeextensions.codeplex.com/有一个Last(dayOfWeek)扩展方法,可以为您完成此操作

测试包括:-)



3> Guffa..:

获取下个月的第一天,然后找到该月的第一个工作日.回到七天,你就是在正确月份的最后一周的那个工作日:

DateTime date = new DateTime(2009, 3, 12);
DayOfWeek day = DayOfWeek.Sunday;

DateTime nextMonth = new DateTime(date.Year, date.Month, 1).AddMonths(1);
while (nextMonth.DayOfWeek != day) {
    nextMonth = nextMonth.AddDays(1);
}
DateTime lastInMonth = nextMonth.AddDays(-7);

(您可以使用一些算法来替换循环,该算法根据DayOfWeek值的数值计算要添加的天数,但这更直接.)

编辑:
您当然也可以获得当月的最后一天,然后向后循环,直到找到正确的工作日.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有