我如何学习下周三,星期一在星期?例如今天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