使用月份日历获取选定星期的星期六日期值
问题描述:
我对此问题感到不解。 当我选择特定日期时,如何获取月份日历星期六值。使用月份日历获取选定星期的星期六日期值
例如:我在月份日历上选择了2月14日。选择后会有一个提示,其中包含星期六“2011年2月19日”或我选择的2月24日,提示将显示“2011年2月26日”。
答
// This function will return the next saturday for a datetime
DateTime NextSaturday(DateTime now)
{
while (now.DayOfWeek != DayOfWeek.Saturday)
now = now.AddDays(1);
return now;
}
UPDATE
经过近2年来,我想改变这个答案。
这几天我永远不会为class
创建“效用函数”。我现在总是“扩大”班级。签名现在应该是DateTime.Next(DayOfWeek)
。有关扩展的更多详细信息,请参阅http://msdn.microsoft.com/en-us/library/vstudio/bb383977.aspx。
此外,逻辑是错误的。如果now
是星期六,那么它总是会返回当前日期。我认为大部分来电者预计它会返回now
+ 7天。因此,第一个变化是:
DateTime NextSaturday(DateTime now)
{
do {
now = now.AddDays(1);
} while (now.DayOfWeek != DayOfWeek.Saturday)
return now;
}
然后改变函数与每周的任何一天的工作:
DateTime Next(DateTime now, DayOfWeek nextDay)
{
do {
now = now.AddDays(1);
} while (now.DayOfWeek != nextDay)
return now;
}
现在,“扩展” DateTime类支持下(星期几)
namespace DateTime.Extensions
{
public static class DateTimeExtensions
{
public static DateTime Next(this DateTime now, DayOfWeek nextDay)
{
do {
now = now.AddDays(1);
} while (now.DayOfWeek != nextDay)
return now;
}
}
}
答
DateTime add = DateTime.Now; //From popup box
int add = (((int)selected.DayOfWeek) + 1;
if(add != 7) {
selected = selected.AddDays(add);
}
@scrum比我的(@richard)答案更有效率(+1)。但我认为我的可维护性更强。 – 2011-02-14 09:23:51