winforms 使用月历从选定的周获取星期六日期值

3mpgtkmj  于 2023-06-24  发布在  其他
关注(0)|答案(3)|浏览(64)

我有点被这个问题卡住了。当我选择了一个特定的日期时,我如何获得月历星期六的值。
例如:我在月历上选择了2月14日。选择后,将有一个提示,其中包含星期六“2011年2月19日”或我选择了2月24日,提示将显示“2011年2月26日”。

fhg3lkii

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天。第一个变化是:

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;
      }
   }
 }
oxf4rvwz

oxf4rvwz2#

DateTime add = DateTime.Now; //From popup box
int add = (((int)selected.DayOfWeek) + 1;
if(add != 7) {
    selected = selected.AddDays(add);
}
kd3sttzy

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; 
}

假设星期日是一周的第一天

相关问题