2012-02-25 77 views
4

我用这个代码从另一个问题:检查这个星期一是上周一在一个月

private bool NthDayOfMonth(DateTime date, DayOfWeek dow, int n){ 
    int d = date.Day; 
    return date.DayOfWeek == dow && (d-1)/7 == (n-1); 
} 

它工作正常。但它不检查最后一天(对于我来说,它是当n = 5时)。如何修改它?
谢谢。

+0

看到http://stackoverflow.com/questions/2711357/how-to-get-last-friday-of-months-使用网络 – 2012-02-25 07:00:17

+0

请举一个例子,它不起作用 – 2012-02-25 07:35:32

回答

9

方法如下检查给定的日期每月的最后一个星期几。

private bool IsLastOfMonth(DateTime date) 
{ 
    var oneWeekAfter = date.AddDays(7); 
    return oneWeekAfter.Month != date.Month; 
} 

所以有新的方法,它只是检查星期一

private bool IsLastMonday(DateTime date) 
{ 
    if (date.DayOfWeek != DayOfWeek.Monday) 
     return false; // it is not monday 

    // the next monday is... 
    var oneWeekAfter = date.AddDays(7); 

    // and is it in same month?, if it is, that means its not last monday 
    return oneWeekAfter.Month != date.Month; 
} 
+0

我星期一为检查添加了一个新的方法。 – arunes 2012-02-25 09:42:11

2

让我们3月30日,

d = 30, 
(date.DayOfWeek == DayOfWeek.Friday) == true, 
(30-1)=29, 29/7 = 4 
4 == (5-1) 

因此,工程

要只检查是否星期几是上次在mothth可以使用

return date.AddDays(7).Month != date.Month; 
相关问题