2012-02-25 51 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; 
相關問題