C#中的DateTime间隔限制

Eya*_*yad 5 c# datetime

问题: 我正在为我的顾问在学校实施调度程序.调度程序假设在星期一到星期五的上午8:00到下午5:00之间设置15分钟的间隔时间段.此外,顾问程序必须指定调度程序的开始和结束日期.调度程序还将提供一个选项,以指定15分钟时隙是否未打开.这意味着我的顾问将能够将特定时间段标记为不可用.

到目前为止 我所拥有的:我创建了一个简单的类:

public class TimeSlot  
    {
        public DateTime dateTime
        {
            get;
            set;
        }

        public bool isAvailable
        {
            get;
            set;
        }

        TimeSlot(DateTime dt, bool Avalible)
        {
            dateTime = dt;
            isAvailable = Avalible;
        } 
    }
Run Code Online (Sandbox Code Playgroud)

该类基本上表示调度程序中一个时隙的对象.我还有一个时间列表,用于保存有效时隙列表:

List<TimeSlot> TSList = new List<TimeSlot>();
Run Code Online (Sandbox Code Playgroud)

请注意,有效时间段表示以下内容:

  1. 日期在:周一至周五.
  2. 时间在:上午8:00至下午5:00
  3. 时间段在15分钟内.

另外,我有一个方法填写TSList如下:

 private void button_Next_Click(object sender, RoutedEventArgs e)
    {
        /* Getting the values of fromDate and toDate from the GUI controls*/
        DateTime fromDate = datePicker1.SelectedDate.Value;
        DateTime toDate = datePicker2.SelectedDate.Value;

        while (fromDate <= toDate)
        {
            /*This ensures that we only deal with days Monday to Friday*/
            if (fromDate.DayOfWeek.ToString() != "Saturday" && fromDate.DayOfWeek.ToString() != "Sunday")
            {
                /*PROBLEM HERE!!*/
            }

            /*Updating fromDate: Incrementing fromDate by 1 day*/
            fromDate = fromDate.AddDays(1);
        }

    }
Run Code Online (Sandbox Code Playgroud)

请注意,我只能满足有效时隙条件下的第一个条件.因此,我只能将日期限制在星期一到星期五的范围内.

问题: 我正在尝试为一个时间段实现缺少的两个有效条件:

  1. 如何限制时间仅为上午8:00至下午5:00?
  2. 如何将时间间隔隔开15分钟?

Mar*_*ner 3

首先,请使用DayOfWeek.SaturdayandDayOfWeek.Sunday进行比较,不需要转换为字符串......

然后只需使用一个简单的循环,例如

DateTime startSlot = fromDate.Date.AddHours(8); // Starts at 8:00AM
while (startSlot.Hour < 17) {
  // Construct time slot class
  startSlot = startSlot.AddMinutes(15);
}
Run Code Online (Sandbox Code Playgroud)

这将为您提供startSlot从上午 8:00 开始到下午 5 点之间的每个日期的值(即最后一个日期为下午 4:45)。