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



当我试图决定是否可以从一列火车转移到另一种火车时,我有问题。条件是,第一列火车的到达时间(A1)必须至少为5分钟。在第二列火车出发之前(D2)。自从您到达车站以来,您等不及180分钟以上,以便第二列火车到达(A2)(您可以在第二列火车上等待任意出发)?

您必须以eneter格式的时间:hh:mm自午夜以来,我确实比较了这些时间。

问题是,如果您想将午夜之前的时间与午夜之后的时间进行比较,则必须在这种情况下更改"如果条件":A1和D2在午夜之后,但是A2在午夜之前,A1和A2之前午夜和D2是午夜之后,A1之前是A2和D2之后,A1和A2在午夜之前(但A2更早),而D2在午夜之后。

在所有这些情况下,您都必须具有不同的状况。如何解决这个问题?

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

谢谢!

我建议您使用24小时时间。这样,如果第二次较低,那么您知道它已滚动到第二天。

如果第二次较低,那么您所要做的就是:

A1 - D1 = (D)ifference
A1 - D = time before D1 leaves (so the time between A1 and D1)

(有人可以检查我的数学吗?我认为这是对的。)

不要根据午夜以来经过的分钟来判断值。根据他们的实际价值来判断他们。您要处理的大多数编程语言都将具有日期/时间类/功能,您可以使用这些语言来进行简单的日期减法。如果您更新问题以指示您正在使用的语言,我相信您将能够获取实用的代码示例。

作为通用的UNIX/Linux实践,例如,您可以将值转换为Unix时间戳,而只是减去秒的时间差。

您可以转换为DateTime,然后做DateDiff

pseudocode(语法上错误):

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

这是我为Excel的类似问题而努力的:

( D3 + IF( (C3-D3)>0,5 ; 1 ; 0 ) ) > ( 0,010417 + C3 + IF( (D3-C3)>0,5 ; 1 ; 0 )  )

00:00 = 0在Excel,24:00 = 1我想知道D3是否在C3之后15分钟以上。上面的公式实现了无需与日期烦恼的事情。请注意,该公式取决于C3和D3相距不超过12小时,这在我的用法场景中始终是正确的,因此这不是问题。

外行术语:您将Time1与(Time2 15分钟)进行比较,但是如果有午夜开关,您检查时间是否相隔12个小时,如果是的,则将24小时添加到Time1或Time2。

我实际上还没有工作,但我认为与Excel是一块杂物有关。

,如果我忽略了一些东西,请务必让我知道!

最新更新