C# 检查两个时间跨度之间的时间跨度

Pro*_*ges 2 c# timespan

首先我检查了这个解决方案:

查找当前时间是否在某个时间范围内

并尝试比较像该解决方案那样的时间跨度

public Boolean CalculateDalUren(DateTime datum, TimeSpan? dalStart, TimeSpan? dalEnd)
    {
        Boolean isDal = false;
        TimeSpan timeBetween = datum.TimeOfDay;

        if ((timeBetween >= dalStart))&&(timeBetween < dalEnd)
            {
                isDal = true;
            }
        }
        return isDal;
    }
Run Code Online (Sandbox Code Playgroud)

请注意,dalStart要么是 21:00,要么dalEnd是 23:00,而且几乎总是 07:00。我将 转换DateTimeTimespan.

现在,如果时间跨度例如是 23:00,那么时间会更大或相同,dalStart但因为(这是一个假设)时间更晚,那么dalEnd它仍然会将 if 语句视为 false。02:00 时反之亦然。那么不是更晚dalStart,而是更早dalEnd

我想这是因为我的时间跨度是两天。当日 21:00 至次日 07:00。有解决方法吗?这样我就可以检查时间是否在 21:00 到第二天早上 07:00 之间。

小智 5

我认为这符合您的要求。

如果dalEnd小于dalStart,则应该是第二天的TimeSpan。

    public Boolean CalculateDalUren(DateTime datum, TimeSpan? dalStart, TimeSpan? dalEnd)
    {
        Boolean isDal = false;
        DateTime StartDate = DateTime.Today; 
        DateTime EndDate = DateTime.Today;

        //Check whether the dalEnd is lesser than dalStart
        if (dalStart >= dalEnd)
        {
            //Increase the date if dalEnd is timespan of the Nextday 
            EndDate = EndDate.AddDays(1); 
        }

        //Assign the dalStart and dalEnd to the Dates
        StartDate = StartDate.Date + dalStart.Value; 
        EndDate = EndDate.Date + dalEnd.Value;

        if ((datum >= StartDate) && (datum <= EndDate))
        {
            isDal = true;
        }
        return isDal;
    }
Run Code Online (Sandbox Code Playgroud)

尝试一下。