何年にもわたって、私は一日の終わりのさまざまな解釈に出くわしてきました。 しかし、日付と間隔を比較するとき、それを表現する正しい方法は何ですか?
23:59:59を好む人もいれば、 00:00:00を使用する人もいることがわかりました。ここ StackOverflow では、 24:00:00
の使用と表示に関連する質問の例をいくつか見つけましたが、この質問の範囲は、2 日を分割する方法を決定することに重点を置いています。
言い換えれば、私たちは 1 日がどこで終わり、どこで次の日が始まるかを決定する問題に関心があります。これは、最も基本的な時間間隔の比較や計算さえも必要とする多くのアプリケーションで共通の問題のようです。
上記の解釈を明確にするために、3 つの異なる解釈の下で 2014 年1月 1 日を表す 3 つの例を以下に示します。
- 準深夜:
2014-01-01 00:00:00 - 2014-01-01 23:59:59
- ミッドナイトシャープ:
2014-01-01 00:00:00 - 2014-01-02 00:00:00
- ミリタリー ミッドナイト:
2014-01-01 00:00:00 - 2014-01-01 24:00:00
準真夜中の解釈が最も直感的なものだと私は感じていますが、時間を正しく指すにはかなりの量のボイラープレートが必要なようです. さらに、1 日の最後の 1 秒が正しく処理されない場合にエッジ ケースに遭遇するリスクや、これらのギャップをテストするために間隔の膨大なコレクションをスキャンするときにパフォーマンスに影響を与えるリスクがあります。
同様に、軍の真夜中の解釈も、その分割点の二重表現をセットアップするために定型文を必要とするようです。あまり考えないと、このアプローチを使用して多くの複雑さを考えることができません。
最後に、真夜中の鋭い解釈は、最も一貫性のある解釈の有力な候補のようです。真夜中準とは異なり、時刻を設定する定型文を必要とせず、演算子<
、<=
、>
およびで自然に動作し>=
ます。
2014-01-01 24:00:00
PHP 言語がすでにとして解釈していることは注目に値します2014-01-02 00:00:00
。これは、日付を真夜中のシャープな解釈に変換する効果があります。
ある解釈を別の解釈よりも使用することを正当化する、模範的な FLOSS ライブラリまたは標準の注目すべき先例はありますか?