如何比较午夜之后和之前的时间?

时间:2012-10-29 22:41:10

标签: time

当我试图决定是否可以从一列火车转移到另一列火车时,我遇到了问题。条件是,到达(A1)第一列火车的时间必须至少为5分钟。在第二列火车出发前(D2)。你不能等待超过180分钟,因为你已经到达车站,第二列火车到达(A2)(你可以在第二列火车等待任意离开)?

你需要的时间是格式:HH:MM 在将它们转换为从午夜起经过的几分钟之后,我确实将这些时间进行了比较。

问题是,如果你想比较午夜之前的时间和午夜之后的时间,你必须在这种情况下改变“if condition”:A1和D2在午夜之后但A2在午夜之前,A1和A2在之前午夜,D2在午夜之后,A1在之前,A2和D2在之后,A1和A2在午夜之前(但A2更早),D2在午夜之后。

在所有这些情况下,你必须有不同的条件。怎么解决这个问题?

PS:我想我应该使用不同的时间格式(不是午夜以来的分钟数),但是如何?

谢谢!

4 个答案:

答案 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更像是一块粪便。

如果我忽略了某些事情,请务必告诉我!