C#检查两个时间间隔之间的时间间隔

C#检查两个时间间隔之间的时间间隔,c#,timespan,C#,Timespan,首先,我检查了这个解决方案: 并尝试比较类似于该解决方案的时间跨度 public Boolean CalculateDalUren(DateTime datum, TimeSpan? dalStart, TimeSpan? dalEnd) { Boolean isDal = false; TimeSpan timeBetween = datum.TimeOfDay; if ((timeBetween >= dalStart))&a

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

并尝试比较类似于该解决方案的时间跨度

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;
    }
public Boolean calculatedAllen(日期时间数据、TimeSpan?dalStart、TimeSpan?dalEnd)
{
布尔isDal=假;
TimeSpan timeBetween=基准面。时间间隔;
如果((timeBetween>=dalStart))&&(timeBetween
请注意,
dalStart
是21:00或23:00,
dalEnd
几乎总是07:00。我将
DateTime
转换为
Timespan

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


我想这是因为我的时间跨度为2天。从一天的21:00到第二天的07:00。有解决办法吗?因此,我可以检查时间是否在第二天早上21:00到07:00之间。

创建两个日期,即实际一天的00:00,将dalStart、dalEnd timespan添加到其中,然后
如果(datum>datetimeFromDalStart和datum我认为这符合您的要求

如果dalEnd小于dalStart,则应为下一天的时间跨度

    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;
    }
public Boolean calculatedAllen(日期时间数据、TimeSpan?dalStart、TimeSpan?dalEnd)
{
布尔isDal=假;
DateTime StartDate=DateTime.Today;
DateTime EndDate=DateTime.Today;
//检查dalEnd是否小于dalStart
如果(dalStart>=dalEnd)
{
//如果dalEnd是下一天的时间跨度,则增加日期
EndDate=EndDate.AddDays(1);
}
//将dalStart和dalEnd分配给日期
StartDate=StartDate.Date+dalStart.Value;
EndDate=EndDate.Date+dalEnd.Value;

如果((基准>=起始日期)和(数据时间跨度不受任何时间点的限制,它只是对时间持续时间的描述。你到底想完成什么?时间跨度!=时间,所以21:00表示21小时,而不是9点。是的,00:00时间=0,因此我无法再进行比较。我猜这是一个点。@MathiasR.Jessen我希望
布尔IsDal
为真当给定的
DateTime
中的时间介于我在2
TimeSpan
中给出的时间之间时,其中大部分时间为21:00和07:00小时。因此,如果
DateTime
中的时间=02:00,则应返回true,如果其14:00小时为false。好的,将尝试此操作。将
TimeSpan
转换为
DateTime
,并增加如果(timeBetween.TimeOfDay
是正确的答案,那么day
就是正确的答案。谢谢你的帮助,我认为dalStart和dalEnd timespan变量是固定的,所以我这样做了。现在看起来不错。欢迎继续。