问题: 我正在为我的顾问在学校实施调度程序.调度程序假设在星期一到星期五的上午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;
        } 
    }
该类基本上表示调度程序中一个时隙的对象.我还有一个时间列表,用于保存有效时隙列表:
List<TimeSlot> TSList = new List<TimeSlot>();
请注意,有效时间段表示以下内容:
另外,我有一个方法填写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);
        }
    }
请注意,我只能满足有效时隙条件下的第一个条件.因此,我只能将日期限制在星期一到星期五的范围内.
问题: 我正在尝试为一个时间段实现缺少的两个有效条件:
首先,请使用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);
}
这将为您提供startSlot从上午 8:00 开始到下午 5 点之间的每个日期的值(即最后一个日期为下午 4:45)。