0

イベントの開始と開始を表す日付形式の 2 つの入力があるとします。

例:23:5923:10

タイムスパンを手動で計算する方法は、このイベントの期間を意味しますか?

インターフェイスを考慮することができます:

void timeSpan(int hourStart, int minutesStart, int hourEnd, int minutesEnd);

4

2 に答える 2

1

これは本当にあなたが望むものですか?

endh,endm := split(':',endtime)
starth,startm := split(':',starttime)

diffm := endm-startm
diffh := endh-starth

if (diffm<0) 
  diffm += 60
  diffh -= 1

編集

コメントで議論した後: 開始時刻と終了時刻が HH:MM のみで指定され、終了時刻 < 開始時刻 OQ が想定したい場合、終了時刻は翌日です (+2 日、+3 日などではありません)。 . この場合、次のものが必要です。

if (diffh<0)
  diffh += 24
于 2013-03-16T22:28:45.137 に答える
1

「手動で」とは、時間を解析するライブラリがないことを意味すると思います。

時間を分に変換し、それらを引きます。

start = "23:10"
end = "23:59"

s = parseInt(start.substr(0, 2)) * 60 + parseInt(start.substr(3, 2))
e = parseInt(end.substr(0, 2)) * 60 + parseInt(end.substr(3, 2))

diff = e - s

開始日が終了日より後の場合、マイナスの結果が得られます。これが終了時刻が翌日であることを意味する場合は、24*60 分を追加できます。

if diff < 0
  diff += 24*60

時間が入れ替わっていることを意味する場合は、結果の絶対値を取得できます。

diff = abs(diff)
于 2013-03-16T22:32:34.500 に答える