我有点卡在这个问题上。当我选择特定日期时,如何获取月历星期六值。
例如:我在月历上选择了 2 月 14 日。选择后会有一个提示,其中包含星期六“2011 年 2 月 19 日”或我选择了 2 月 24 日,提示将显示“2011 年 2 月 26 日”。
我有点卡在这个问题上。当我选择特定日期时,如何获取月历星期六值。
例如:我在月历上选择了 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;
}
更新
将近 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 类以支持 Next(DayOfWeek)
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);
}