1

ある列車から別の列車に乗り換えることができるかどうかを判断しようとしているときに問題があります。条件は、始発列車の到着(A1)時間が5分以上であること。2 番目の列車 (D2) の出発前。そして、あなたは駅に到着したので、2 番目の列車が到着するまで 180 分以上待つことはできません (A2) (出発する 2 番目の列車で任意に待つことができます)?

入力する必要がある時間の形式は次のとおりです。HH:MM 午前 0 時から経過した分に変換した後、これらの時間を比較しました。

問題は、午前 0 時より前の時刻と午前 0 時以降の時刻を比較する場合、この場合は「if 条件」を変更する必要があるということです。は真夜中後、A1 は真夜中前、A2 と D2 は後、A1 と A2 は真夜中前 (ただし、A2 の方が早い)、D2 は真夜中後です。

これらのすべてのケースで、異なる状態にする必要があります。これを解決するには?

PS: 別の時刻形式 (真夜中からの分数ではなく) を使用する必要があると思いますが、どうすればよいですか?

ありがとうございました!

4

4 に答える 4

0

24時間制を使用することをお勧めします。そうすれば、2回目が低い場合は、翌日にロールオーバーしたことがわかります。

2回目が低い場合は、次のことを行う必要があります。

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

に変換してから実行できますDateTimeDateDiff?

疑似コード (構文的に間違っています):

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 に答える