2012-06-17 21 views
0

可能重複:
Getting specific days in a month如何確定本月的第一個或第三個星期三是否尚未到達,如果有,哪一個最接近當前日期?

我之前曾經談到這個問題,在How to find the 3rd Friday in a month with C#?但因爲我沒有解釋我的問題那麼,我必須再試一次:

我的目標很簡單:按下一個按鈕(此處稱爲「Button1」),我必須確定今天的日期是否在之前本月的第一個或第三個星期三。如果是這種情況,那麼我必須將標籤的文本(這裏稱爲「lblDate」)設置爲這些未來星期三中最接近當前日期的日期。

到目前爲止,我已經寫了這一點:

protected void Button1_Click(object sender, EventArgs e) 
{ 

    DateTime Now = DateTime.Today; 
    DateTime TempDate = new DateTime(Now.Year, Now.Month, 1); 

    if (TempDate.DayOfWeek != DayOfWeek.Wednesday) 
    { 
     TempDate = TempDate.AddDays(1); 
     string date = TempDate.ToString(); 
     lblDate.Text = date; 
    } 
    if (TempDate == TempDate.AddDays(1)) 
    { 
     TempDate = TempDate.AddDays(14); 
     string date = TempDate.ToString(); 
     lblDate.Text = date; 
    } 

} 

正如你所看到的,缺少的東西。我將不勝感激任何幫助填補...

+2

請不要當你的前一個被關閉重新問你的問題。 –

+0

我已經說過了,我之前也問過一個。 – unknownsatan

+0

'if(TempDate == TempDate.AddDays(1))'...嗯... – spender

回答

2

您也可以嘗試這樣的:

protected DateTime getFirstWednesdayOfMonth(DateTime seedDate) 
{ 
    DateTime wed1 = new DateTime(seedDate.Year, seedDate.Month, 1); //1st Wednesday can start on the 1st of the month 
    while (wed1.DayOfWeek != DayOfWeek.Wednesday) 
    { 
     wed1 = wed1.AddDays(1); 
    } 
    return wed1; 
} 

protected DateTime getThirdWednesdayOfMonth(DateTime seedDate) 
{ 
    DateTime wed3 = new DateTime(seedDate.Year, seedDate.Month, 15); //3rd Wednesday cannot start prior to the 15th of the month 
    while (wed3.DayOfWeek != DayOfWeek.Wednesday) 
    { 
     wed3 = wed3.AddDays(1); 
    } 
    return wed3; 
} 
protected void Button1_Click(object sender, EventArgs e) 
{ 
    DateTime Now = DateTime.Today; 
    DateTime wed1 = getFirstWednesdayOfMonth(Now); 
    DateTime wed3 = getThirdWednesdayOfMonth(Now); 

    if (Now < wed1) 
    { 
     lblDate.Text = wed1.ToString(); 
    } 
    else if (Now < wed3) 
    { 
     lblDate.Text = wed3.ToString(); 
    } 
} 
+0

沒有輸出,標籤沒有設置。 – unknownsatan

+0

剛糾正了一些錯誤。它的作品謝謝! – unknownsatan

2

嗯,我不完全確定這會回答你的問題,但它可能會讓你在正確的軌道上。您可以通過DateTime功能計算一週中的哪一天。只需使用類似於:

DateTime dateValue = new DateTime(2008, 6, 11); 
Console.WriteLine((int) dateValue.DayOfWeek);  // Displays 3 

使用與實際日期一起這樣說:

if((int) dateValue.DayOfWeek == 3) //which is Wednesday 
    if(date < 7 && date > 1) 
    week == 1st Weds of month 
    else(date < 21 && date > 14) 
    week == 3rd Weds of month 

這並不是確切的代碼很明顯,但也許類似的規定將有助於出一點。而且你必須稍微調整一下參數,才能調整第一個星期不準確的下降。由於一週只有七天,即使第一個星期二的星期一落在1到7的範圍內,14和21也是如此。但是,只是玩弄這個,你應該儘快找出答案。

+0

我想我現在正在正確的軌道:)謝謝! – unknownsatan

相關問題