2009-02-06 67 views
0

我如何學習下週三,星期一在星期?例如今天06.02.2009下週一09.02.2009或星期三11.02.2009有什麼算法?學習日C#

我需要:

哪一天星期一在comeweek?

findDay( 「星期一」)

它必須返回09.02.2009

========================== ===========================

findDay( 「星期二」)

它必須回到2009年2月10日

+0

nobugz的答案是你所需要的。 DayOfWeek是一個枚舉。只需複製/粘貼並使用它。 – Canavar 2009-02-06 13:26:03

回答

3
DateTime now = DateTime.Now; 
DateTime nextMonday = now.AddDays((int)now.DayOfWeek - (int)DayOfWeek.Monday); 

哼,好像我回答太快了。其實還有更多的檢查要做。看看nobugz或peterchen的答案。

+0

嗯......在大多數情況下,這不會減去一天或更多天嗎? – peterchen 2009-02-06 12:57:35

+0

非常感謝! – Penguen 2009-02-06 13:01:37

4
public static DateTime GetNextDayDate(DayOfWeek day) { 
    DateTime now = DateTime.Now; 
    int dayDiff = (int)(now.DayOfWeek - day); 
    if (dayDiff <= 0) dayDiff += 7; 
    return now.AddDays(dayDiff); 
} 
0

像Tyalis,但一些額外的檢查是必需的:

int daysUntilMonday = ((int)DayOfWeek.Monday - (int)today.DayOfWeek; 
if (daysUntilMonday <= 0) 
    daysUntilMonday += 7; 

Monday = DateTime.Now.AddDays(daysUntilMonday); 
0

只是重複了一下:

DateTime baseDate = ...; 
DayOfWeek requiredDayOfWeek = ...; 

while(baseDate.DayOfWeek != requiredDayOfWeek) 
    baseDate = baseDate.AddDays(1); 

你也可以寫一個擴展方法,如果這些可供選擇:

static Next(this DateTime date, DayOfWeek requiredDayOfWeek) { ... } 

你會得到pr etty語法:today.Next(DayOfWeek.Saturday)

1

我發現了一個簡單的解決方案:

星期幾是一個枚舉,如:星期一= 1,星期二= 2,等等

因此,要在下週一(今天),你應該使用:

DateTime.Today.AddDays(8-(int)DateTime.Today.DayOfWeek) 

其中「8」是下週的星期一(根據enum-> 1 + 7)。

更換8 10(即週三,3 + 7),你會得到下週的週三,等等...