弄清楚跨越的小时数是否大于24小时

jpi*_*olo 3 algorithm time

我不知道我是否在失去理智,或者这是否可能.

顺便说一句,我没有使用任何标准库,所以这不依赖于语言,因此它为什么而不是stackoverflow.

我有两个时间段以int格式传递给我.

1st period-
    Start Time:
    End Time:

2nd period-
    Start Time:
    End Time:
Run Code Online (Sandbox Code Playgroud)

Int是从午夜开始的分钟,因此早上7点将是420分钟.

所以我想写的函数的一个例子是:

bool SpanMoreThan24Hours(int firstStartTime, int firstEndTime,
                         int secondStartTime, int secondEndTime)
{
    ....
}
Run Code Online (Sandbox Code Playgroud)

我甚至不确定这可以做到.

PS跨越午夜很好,但它没有必要.期间不能重叠.

So it could look like this:
420, 1140, 1260, 419
7am, 7pm,  9pm,  6:59am
- Valid
This would be valid since it doesn't span over 24 hours.

420, 1140, 1260, 421
7am, 7pm,  9pm,  7:01am
- Not valid

420, 60, 120, 419
7am, 1am,2am, 6:59am
- Valid
Run Code Online (Sandbox Code Playgroud)

我必须确保从第1期开始时间到第2期结束时间不超过24小时.

dan*_*uio 6

如果一个时期可以在周一开始并在周三结束,那么问题就无法解决; 否则,这里有一些C#给你:

int MinutesBetweenTwoTimes(int time1, int time2)
{
    return time1 < time2 ? time2 - time1 : (1440-time1) + time2;
}

bool SpanMoreThan24Hours(int firstStartTime, int firstEndTime,
                         int secondStartTime, int secondEndTime)
{
    int totalSpannedTime = MinutesBetweenTwoTimes(firstStartTime, firstEndTime)
                           + MinutesBetweenTwoTimes(firstEndTime, secondStartTime) 
                           + MinutesBetweenTwoTimes(secondStartTime, secondEndTime);
    return totalSpannedTime > 1440;
}
Run Code Online (Sandbox Code Playgroud)