NodaTime をダウンロードする前に、NodaTime に関する 1 つの質問に対する簡単な回答を得たいと思っています。これまでのところ、私は NodaTime とその API について読んでいますが、非常に慎重に考えられているようです。
データベース バックエンド、データベース プロバイダーを備えたデスクトップ クライアント、および主要なブラウザーで実行する必要がある Web クライアントを備えたアプリケーションで遭遇した混乱の一部を解消するのに役立つことを願っています。DateTime および Time での ISO 8601 のサポートは、さまざまなデータベース、データベース プロバイダー、および Web プラットフォームによって大きく異なります。たとえば、Internet Explorer は ISO 8601 に準拠していますが、SQL Server は準拠していません。Chrome がそうではないため、web UI タイムピッカーはそうではありません。
質問: NodaTime では、24:00 は有効な時間値ですか? 24 は Time コンストラクターの時間パラメーターの有効な引数ですか?
背景: ISO 8601 では、真夜中の 2 つの表現が許可されています。「今朝の真夜中」の 00:00 と「今夜の真夜中」の 24:00 です。DateTime オブジェクトがタイムライン上にある場合、時間要素が 24:00 の日付は、翌日の 00:00 と一致します。これらは、2 つの異なる表現を持つ同じタイムライン インスタントであり、両方の表現が ISO ごとに有効です。
時間のみの値は、タイムラインから切り離されます。00:00 の時刻は、切り離された 24 時間制の日の開始時に発生し、24:00 の時刻のみの値は 00:00 の 24 時間後です。Time タイプは、1 時間に 24 を受け入れる必要があります。24 が時である場合、秒、ミリ秒、ティックの最大値は 0 です (ただし、モジュロ演算が関係し、時間が繰り越されて 24:01 が 00:01 になる場合を除きます。ただし、ISO はこの実装の詳細について何も述べていません。ちゃんと覚えたら)。