我有点被这个问题卡住了。当我选择了一个特定的日期时,我如何获得月历星期六的值。例如:我在月历上选择了2月14日。选择后,将有一个提示,其中包含星期六“2011年2月19日”或我选择了2月24日,提示将显示“2011年2月26日”。
fhg3lkii1#
// 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; }
更新
两年后,我想改变这个答案。这些天来,我永远不会为class创建“实用函数”。我现在总是“延伸”课堂。签名现在应该是DateTime.Next(DayOfWeek)。有关扩展的更多详细信息,请参见http://msdn.microsoft.com/en-us/library/vstudio/bb383977.aspx。逻辑也是错误的。如果now是星期六,那么它将始终返回当前日期。我想大多数打电话的人都希望它返回now + 7天。第一个变化是:
class
DateTime.Next(DayOfWeek)
now
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; } } }
oxf4rvwz2#
DateTime add = DateTime.Now; //From popup box int add = (((int)selected.DayOfWeek) + 1; if(add != 7) { selected = selected.AddDays(add); }
kd3sttzy3#
public DateTime DayInWeek(DateTime self, DayOfWeek dayOfWeek) { DateTime lRet = self; int diff = (self.DayOfWeek - dayOfWeek) % 7; lRet = self.AddDays(-1 * diff).Date; return lRet; }
假设星期日是一周的第一天
3条答案
按热度按时间fhg3lkii1#
更新
两年后,我想改变这个答案。
这些天来,我永远不会为
class
创建“实用函数”。我现在总是“延伸”课堂。签名现在应该是DateTime.Next(DayOfWeek)
。有关扩展的更多详细信息,请参见http://msdn.microsoft.com/en-us/library/vstudio/bb383977.aspx。逻辑也是错误的。如果
now
是星期六,那么它将始终返回当前日期。我想大多数打电话的人都希望它返回now
+ 7天。第一个变化是:然后将函数更改为适用于一周中的任何一天:
现在“扩展”DateTime类以支持Next(DayOfWeek)
oxf4rvwz2#
kd3sttzy3#
假设星期日是一周的第一天