イベントの開始と開始を表す日付形式の 2 つの入力があるとします。
例:23:59
と23:10
タイムスパンを手動で計算する方法は、このイベントの期間を意味しますか?
インターフェイスを考慮することができます:
void timeSpan(int hourStart, int minutesStart, int hourEnd, int minutesEnd);
イベントの開始と開始を表す日付形式の 2 つの入力があるとします。
例:23:59
と23:10
タイムスパンを手動で計算する方法は、このイベントの期間を意味しますか?
インターフェイスを考慮することができます:
void timeSpan(int hourStart, int minutesStart, int hourEnd, int minutesEnd);
これは本当にあなたが望むものですか?
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
「手動で」とは、時間を解析するライブラリがないことを意味すると思います。
時間を分に変換し、それらを引きます。
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)