当我试图决定是否可以从一列火车转移到另一列火车时,我遇到了问题。条件是,到达(A1)第一列火车的时间必须至少为5分钟。在第二列火车出发前(D2)。你不能等待超过180分钟,因为你已经到达车站,第二列火车到达(A2)(你可以在第二列火车等待任意离开)?
你需要的时间是格式:HH:MM 在将它们转换为从午夜起经过的几分钟之后,我确实将这些时间进行了比较。
问题是,如果你想比较午夜之前的时间和午夜之后的时间,你必须在这种情况下改变“if condition”:A1和D2在午夜之后但A2在午夜之前,A1和A2在之前午夜,D2在午夜之后,A1在之前,A2和D2在之后,A1和A2在午夜之前(但A2更早),D2在午夜之后。
在所有这些情况下,你必须有不同的条件。怎么解决这个问题?
PS:我想我应该使用不同的时间格式(不是午夜以来的分钟数),但是如何?
谢谢!
答案 0 :(得分:0)
我建议你使用24小时。这样,如果第二次降低,那么你就知道它会翻到第二天。
如果第二次低于那么你需要做的就是:
A1 - D1 = (D)ifference
A1 - D = time before D1 leaves (so the time between A1 and D1)
(有人可以查看我的数学吗?我认为这是正确的。)
答案 1 :(得分:0)
不要根据自午夜起经过的分钟来判断这些值。根据他们的实际价值判断他们。您要处理的大多数编程语言都有日期/时间类/函数,您可以使用它们进行简单的日期减法。如果您更新问题以指明您使用的语言,我相信您将能够获得实用的代码示例。
例如,作为通用的UNIX / LINUX实践,您可以将该值转换为UNIX时间戳,然后减去以获得时间差(以秒为单位)。
答案 2 :(得分:0)
您可以转换为DateTime
,然后转换为DateDiff
吗?
伪代码(语法错误):
If DateDiff(minutes, A1, D2) > 5 Then
If DateDiff(minutes, A1, A2) < 180 Then
Go ahead and allow the transfer
else
Look for another train (too long of a wait)
end if 'DateDiff(minutes, A1, A2) < 180
Look for another train (not enough time to transfer)
end if 'DateDiff(minutes, A1, D2) > 5
答案 3 :(得分:-2)
这就是我正在研究Excel的类似问题:
( D3 + IF( (C3-D3)>0,5 ; 1 ; 0 ) ) > ( 0,010417 + C3 + IF( (D3-C3)>0,5 ; 1 ; 0 ) )
Excel中的<00> 00:00 = 0,24:00 = 1
我想知道D3在C3之后是否超过15分钟。
上面的公式实现了这一点,而不必考虑日期。
请注意,公式取决于C3和D3相隔不超过12小时,在我的使用场景中总是如此,所以没有问题。
Laymans术语: 你将Time1与(time2 + 15min)进行比较,但是如果有午夜开关你会检查时间是否相隔超过12小时,如果是,则将24h添加到Time1或Time2。
我还没有真正开始工作,但我相信Excel更像是一块粪便。
如果我忽略了某些事情,请务必告诉我!