我设置了一个调度系统为我的项目之一,尤其是一两件事,我需要做的是允许多个窗口是每一天内。一个窗口将代表两个时间点,开始和结束。
我不确定该如何解决这个问题。我可以采用一种非常hacky的方式来执行此操作,但我宁愿知道如何正确执行此操作,这样我可以对自己的代码保持应有的状态感到满意。
我目前正在尝试做的事情,如下所示:
public class ScheduleWindow
{
public string Name;
public DateTime EndTime;
public DateTime StartTime;
}
我的日程安排有一个名称ID,但与此无关。 我有一个窗口启动的时间。 我有一个窗口将要结束的时间。
以下方法的目的是向时间表添加一个窗口。我希望时间表代表我的一天,所以我使用当前的年,月和日,然后将小时和分钟设置为希望该窗口处于活动状态的时间点。
public void AddWindow(string name, int startHour, int endHour, int startMinute, int endMinute)
{
var year = DateTime.Now.Year;
var month = DateTime.Now.Month;
var day = DateTime.Now.Day;
var startTime = new DateTime(year: year, month: month, day: day, hour: startHour, minute: startMinute, second: 0, millisecond: 0);
var endTime = new DateTime(year: year, month: month, day: day, hour: endHour, minute: endMinute, second: 0, millisecond: 0);
var window = new ScheduleWindow()
{
EndTime = endTime,
StartTime = startTime,
Name = name
};
_scheduleWindows.Add(window);
}
所以,现在我们又回到我的问题的根源。 实际上我完全不确定如何检查我们是否在该时间范围内。
`public bool WindowIsActive()
{
foreach (var window in _scheduleWindows)
{
...
//if any window is currently active, return true
}
}`
我一直在这里摆弄这段代码已有一段时间了,任何帮助将不胜感激。如果有人可以为我提供一些指向可能会更好的解决方案的指导,那真是太棒了!
目标是检查并查看当前是否有任何窗口处于活动状态。目前,我不知道如何。
答案 0 :(得分:1)
您可以使用<
和>
运算符来比较DateTime
。
[edit:我意识到您只是想比较一天中的时间-即忽略月份和年份-您将使用TimeOfDay
的{{1}}属性]
DateTime