问题: 我正在为我的顾问在学校实施调度程序.调度程序假设在星期一到星期五的上午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)
请注意,有效时间段表示以下内容:
另外,我有一个方法填写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)
请注意,我只能满足有效时隙条件下的第一个条件.因此,我只能将日期限制在星期一到星期五的范围内.
问题: 我正在尝试为一个时间段实现缺少的两个有效条件:
首先,请使用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)。
| 归档时间: |
|
| 查看次数: |
4767 次 |
| 最近记录: |