私は0-23の範囲から取られた2つの選択時間を持っています。どのようにプログラム間の違いを計算するのですか?例えば、22と4との差は、6,22、および24-2となる。選択した2つの時間の差が見つかりました
答えて
これはモジュロ24算術の例です(modular arithmeticの詳細についてはこちらをご覧ください)。
時間は24の法則に合致し、24に対して合同(または等価)があります(例えば、1が合同(または同等)から25)。あなたはちょうど違いのモジュールを計算することができます。ただ、もう少し詳細に行くための
:
あなたの例では(second_time - first_time) modulo 24
、
(4 - 22) modulo 24 = -18 modulo 24 = 6
(24 - 22) modulo 24 = 2 modulo 24 = 2
EDIT。この回答は、質問に指定した詳細(つまり、0〜23時間)を考慮したものです。より複雑なものを実現しようとしている場合は、多くのコーナーケースと例外が考慮されます。
たとえば、私の方法では、0時から24時までの間に違いが得られません。それは同等の時間なので、特定のケースが必要です。いずれにしても、時刻がちょうど0から23までの場合、0時と0時との間の差は、それらが同じ時間か24時間後であるかによって異なります。 :00〜6:00、同じ日か+ N日ですか?)したがって、このあいまいさを解消するために日付を追加する必要があります。
タイムゾーン、うるう秒などを考慮している場合は、分を使用しているとさらに複雑になります。
あなたが使用している言語によっては、負の数よりもモジュロ演算子が複雑になる可能性があるので、サイクルタイムを追加することでそれを考慮する必要があります。その代わりに代わりに:
(second_time - first_time + 24) modulo 24
first_timeを最初に選択した時間とsecond_timeを2番目の選択した時間とする。
擬似コード:
if first_time > 12:
first_time = 24 - first_time
if second_time < 12:
second_time = -second_time
time_difference = abs(first_time - second_time)
あなたは絶対差が必要な場合は、あなたがそれを除外することができ、他のABS()関数を使用することができます。
たとえば約3と6は? –
このロジックは、あなたが言及したケースでは失敗します.Vayoletによって記述されたモジュロ論理が正しい方法です。 – ajays20078
- 1. 2つのテーブル間で重複が見つかりました
- 2. 2つのjava.sql.Timestampsの間に時差がありますか?
- 3. 選択したフレームに要素が見つかりません
- 4. OBIEE 2つの列の時間差
- 5. 複数の自動補完と選択が見つかりました
- 6. 2つのDateTimeオブジェクトの間でJoda Timeの時間差を見つけようとしています
- 7. Androidスタイルの2つのアイテムが選択されました
- 8. 同時に2つのテーブルから選択しますか?
- 9. FireBird - 2つのタイムスタンプ間の時間差を計算しますか?
- 10. EARで間違ったSpring AppContextが見つかりました
- 11. 2つのセッションファクトリが予想されたときに見つかりました
- 12. 2つの日付時刻の間の微妙な差異を見つける
- 13. リストビューで2つのアイテムが選択されました。
- 14. リストビュー2つのアイテムがスクロール中に選択されました
- 15. 2つのフィールドからJという時間差があります
- 16. 選択したGoogle PlayサービスAPIでクラスが見つかりません
- 17. SQLITEで4週間のデータが見つかりました
- 18. Hibernate Enversの間にnullpointerexceptionが見つかりました
- 19. AVAudioRecorder - オプションのアンラップ時にnilが見つかりました
- 20. SQLは2つの列を結合し、連続した行の最大時間を選択します
- 21. 2つ以下の値が見つかった場合は選択を省略します。
- 22. timepickerdialogで間違った時間を選択しました
- 23. 時差Zendの2つの日付間の差
- 24. mysqlは2つの日付/時刻の間で選択します
- 25. デシリアライズ時にコンストラクタが見つかりませんでしたか?
- 26. 2つの大きなリスト間でオーバーラップが見つかった
- 27. ユーザが同時に2つのグループを持つ場所を選択します
- 28. 24時間以上の2時間間の時間差を見つける方法
- 29. 2つのステートメントの時差
- 30. 2日間のSQL差分(1日あたりの時間数)
たとえば3と6はどうですか? –
同じことが適用されます。 3と6の間の時間は次のようになります (6 - 3)24 = 3モジュロモジュロ24 = 3 間及び6と3: (3 - 6)24 = -3モジュロ24 = 21 モジュロ 私は以前の答えをさらに詳細に編集しました。明らかに誰かがそれが悪い答えだと思ったが、何が間違っていたのか気にしなかったからです。私はこれが今より良いと私は私の答えで何かがひどく間違っていることに気づいていないことを願っています。 – Vayolet