如何检查两个时间点之间的C#

时间:2019-01-30 18:13:40

标签: c#

我设置了一个调度系统为我的项目之一,尤其是一两件事,我需要做的是允许多个窗口是每一天内。一个窗口将代表两个时间点,开始和结束。

我不确定该如何解决这个问题。我可以采用一种非常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
   }
}`

我一直在这里摆弄这段代码已有一段时间了,任何帮助将不胜感激。如果有人可以为我提供一些指向可能会更好的解决方案的指导,那真是太棒了!

目标是检查并查看当前是否有任何窗口处于活动状态。目前,我不知道如何。

1 个答案:

答案 0 :(得分:1)

您可以使用<>运算符来比较DateTime

[edit:我意识到您只是想比较一天中的时间-即忽略月份和年份-您将使用TimeOfDay的{​​{1}}属性]

DateTime