【问题标题】:Get saturday date value from a selected week using a month calendar使用月历从选定的星期获取星期六日期值
【发布时间】:2011-06-26 15:59:02
【问题描述】:

我有点卡在这个问题上。 当我选择特定日期时,如何获取月历星期六值。

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

【问题讨论】:

    标签: c# winforms monthcalendar


    【解决方案1】:
    // 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;
          }
       }
     }
    

    【讨论】:

      【解决方案2】:
      DateTime add = DateTime.Now; //From popup box
      int add = (((int)selected.DayOfWeek) + 1;
      if(add != 7) {
          selected = selected.AddDays(add);
      }
      

      【讨论】:

      • @scrum 比我的 (@richard) 答案更有效 (+1)。但我认为我的更易于维护。
      • @richard-schneider Thx,将“可维护性”置于“效率”之上,这几乎总是正确的做法
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-12
      • 1970-01-01
      • 2021-02-05
      • 1970-01-01
      • 2018-09-17
      • 2014-03-08
      • 1970-01-01
      相关资源
      最近更新 更多