Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用月历从所选周获取星期六日期值_C#_Winforms_Monthcalendar - Fatal编程技术网

C# 使用月历从所选周获取星期六日期值

C# 使用月历从所选周获取星期六日期值,c#,winforms,monthcalendar,C#,Winforms,Monthcalendar,我有点被这个问题困住了。 选择特定日期时,如何获取月历星期六值 例如:我在月历上选择了2月14日。选择后,将出现一个包含“2011年2月19日星期六”的提示,或者我选择了“2月24日”,提示将显示“2011年2月26日” 更新 将近两年后,我想改变这个答案 现在,我再也不会为类创建“实用函数”。我现在总是“扩展”课堂。签名现在应该是DateTime.Next(DayOfWeek)。有关扩展的更多详细信息,请参阅 逻辑也是错误的。如果now是星期六,则它将始终返回当前日期。我想大多数打电话的人都

我有点被这个问题困住了。 选择特定日期时,如何获取月历星期六值

例如:我在月历上选择了2月14日。选择后,将出现一个包含“2011年2月19日星期六”的提示,或者我选择了“2月24日”,提示将显示“2011年2月26日”

更新

将近两年后,我想改变这个答案

现在,我再也不会为
创建“实用函数”。我现在总是“扩展”课堂。签名现在应该是
DateTime.Next(DayOfWeek)
。有关扩展的更多详细信息,请参阅

逻辑也是错误的。如果
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)


@scrum比我的(@richard)答案更高效(+1)。但我认为我的更易于维护。@richard schneider Thx,将“可维护”置于“效率”之上几乎总是正确的做法
DateTime Next(DateTime now, DayOfWeek nextDay)
{
   do {
      now = now.AddDays(1);
   } while (now.DayOfWeek != nextDay)

   return now;
 }
 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);
}