这个百度上很多啊,随便搜搜都有
1 public DateTime GetLastWeekDay(int year, int month) 2 { 3 for (int i = 1; i < 7; i++) 4 { 5 DateTime dtt = (new DateTime(year, month, 1)).AddMonths(1).AddDays(-i); 6 if (dtt.DayOfWeek == DayOfWeek.Saturday || dtt.DayOfWeek == DayOfWeek.Sunday) 7 { 8 continue; 9 } else 10 { 11 return dtt; 12 } 13 } 14 throw new Exception("这个异常不会出现"); 15 }
其中,year,month用你所说有某年某月将其替换,即可得到你想要的那个月的最后一个工作日
要考虑周六,周日,还有公众假期。
你把这几个情况考虑进去就行了。
1、维护一个节假日的列表。
2、遍历该月,取最后一个星期五。
3、遍历该月的节假日判断这个星期五是不是在里头,在里头往前推一天。
不考虑节假日的话,2楼的答案就可以了;如果考虑节假日,首先你得有节假日数据
var lastDay =new Date(xxxx,xx+1,xx).AddDay(-1);
while(lastday.DayOfWeek >5){
lastDay=lastDay.AddDay(-1);
}