1

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

您必须输入的时间格式为:HH:MM 在将它们转换为自午夜以来经过的分钟数后,我确实比较了这些时间。

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

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

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

谢谢!

4

4 回答 4

0

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

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

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

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

于 2012-10-29T22:46:07.987 回答
0

不要根据自午夜以来经过的分钟数来判断值。根据他们的实际价值来判断他们。您将处理的大多数编程语言都有日期/时间类/函数,您可以使用它们来进行简单的日期减法。如果您更新您的问题以表明您使用的是什么语言,我相信您将能够获得实用的代码示例。

例如,作为通用 UNIX/LINUX 实践,您可以将该值转换为 UNIX 时间戳,然后减去以秒为单位的时间差。

于 2012-10-29T22:46:44.233 回答
0

你能转换成 aDateTime然后做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
于 2012-10-29T22:54:10.747 回答
-2

这是我正在处理的与 Excel 类似的问题:

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

Excel 中的 00:00 = 0,24:00 = 1 我想知道 D3 是否在 C3 之后超过 15 分钟。上面的公式可以实现这一点,而不必纠结日期。请注意,该公式取决于 C3 和 D3 相隔不超过 12 小时,这在我的使用场景中始终如此,因此没问题。

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

我实际上还没有让它工作,但我相信这与 Excel 是一块粪便有关。

万一我忽略了某些事情,请务必让我知道!

于 2013-04-25T17:16:19.480 回答