我如何學習下週三,星期一在星期?例如今天06.02.2009下週一09.02.2009或星期三11.02.2009有什麼算法?學習日C#
我需要:
哪一天星期一在comeweek?
findDay( 「星期一」)
它必須返回09.02.2009
========================== ===========================
findDay( 「星期二」)
它必須回到2009年2月10日
我如何學習下週三,星期一在星期?例如今天06.02.2009下週一09.02.2009或星期三11.02.2009有什麼算法?學習日C#
我需要:
哪一天星期一在comeweek?
findDay( 「星期一」)
它必須返回09.02.2009
========================== ===========================
findDay( 「星期二」)
它必須回到2009年2月10日
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);
}
像Tyalis,但一些額外的檢查是必需的:
int daysUntilMonday = ((int)DayOfWeek.Monday - (int)today.DayOfWeek;
if (daysUntilMonday <= 0)
daysUntilMonday += 7;
Monday = DateTime.Now.AddDays(daysUntilMonday);
只是重複了一下:
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,星期二= 2,等等
因此,要在下週一(今天),你應該使用:
DateTime.Today.AddDays(8-(int)DateTime.Today.DayOfWeek)
其中「8」是下週的星期一(根據enum-> 1 + 7)。
更換8 10(即週三,3 + 7),你會得到下週的週三,等等...
nobugz的答案是你所需要的。 DayOfWeek是一個枚舉。只需複製/粘貼並使用它。 – Canavar 2009-02-06 13:26:03