アプリケーション: Java + ExtJS
java.util.Date 型のプロパティを持つさまざまなエンティティがあります: startDate および iesendDate (endDate は NULL の可能性があります)。両方の日付は、時間部分の有無にかかわらず選択できます (たとえば、時間部分は常に保持され、選択されていない場合はイベント)。たとえば、次のようにします。
2010-07-01 00:00:00
ユーザーが時間なしで endDate を選択すると、問題が発生する可能性があります。たとえば、期間は 2010-07-01 に開始し、1010-07-04 に終了します。現在、データベースには次のように保存されています。
startDate="2010-07-01 00:00:00"
endDate="2010-07-04 00:00:00".
したがって、期間は 2010-07-04 の FIRST 秒で終了するようです。しかし、ユーザーが想定しているように、endDate は暗黙的に含まれています。たとえば、期間は 2010-07-04 の最後の 2 番目に終了します。システムには、さまざまな期間の日付比較が多数あります。
この場合、終了日を適切に保存するにはどうすればよいですか?
可能な解決策について考えましたが、それらはすべて少し間違っているようです:
- 終了日の時間部分を「2010-07-04 23:59:99」のように保存するには。しかし、終了日は24時間ではないようですが、(24時間 - 0.(9)ミリ秒)、潜在的な問題になる可能性があります。また、時間の部分はかなり醜く見えます。
- ExtJs コンポーネントを変更して、永続化段階でユーザーが選択した日付に 1 日を追加し、この日付がユーザーに表示されるときに再び 1 日を減算します (ユーザーが時間部分を明示的に設定した場合を除く)。ここで、時間部分のある日付とない日付の扱いが異なるのは好きではありません。
- たとえば、開始日のみを Date オブジェクトとして保存し、期間の長さを秒単位で保存します。このアプローチは非常に優れているように見えますが、アプリケーション全体を作り直す必要があり、終了日に異なる比較を使用するのは簡単ではありません。
- 現在のものを使用してください - 非包括的終了日を時間なしで保存し、日付の比較には十分注意してください
そのような問題を解決するために最も広く使用されている慣行を誰かが説明できますか?