私は、世界中の国で使用される Web ベースのシステムを作成しています。格納する必要があるデータの 1 つのタイプは、日付と時刻です。
Joda timeなどのサードパーティのライブラリと比較して、Java の日付と時刻のクラスを使用することの長所と短所は何ですか? これらのサードパーティのライブラリが存在するのには正当な理由があると思いますが、実際に比較したことはありません。
編集:Java 8がリリースされたので、それを使用できる場合は使用してください! java.time
私の見解では、Joda Time よりもさらにクリーンです。ただし、Java 8 より前で行き詰まっている場合は、読み進めてください...
Max は、Joda を使用することの長所と短所を尋ねました...
長所:
java.time
Java 8 は多少似ているため、Java 8 での学習に有利なスタートを切ることができます。短所:
DateTimeZoneBuilder
過去に を効果的に使用できませんでした。ただし、これは非常にまれな使用例です。独自の小さな API を効果的に構築するという oxbow_lakes のアイデアに対応するために、これが悪いアイデアである理由についての私の見解を以下に示します。
日付と時刻を操作するためのより優れた APIが実装されることを期待して、Java 8 を待つつもりでない限り、はい、Joda-Timeを使用してください。時間の節約になり、多くの頭痛の種を回避できます。
答えは次のとおりです。
JODA (および JSR-310) は、複数のカレンダー システムでの使用をサポートする、完全に機能する日付/時刻ライブラリです。
個人的には、JODA は私が必要としている複雑さの点で一歩遠すぎると感じました。Date
標準のJavaとCalendar
クラスの2つの主要な(IMHO)間違いは次のとおりです。
これらは JODA によって対処されますが、実際の「暦」計算のために内部で Java クラスを使用するYearMonthDay
との独自のクラスを作成するのは非常に簡単です。Instant
そうすれば、100 を超えるクラスの API や、別のフォーマット/解析メカニズムなどに慣れる必要はありません。
もちろん、さまざまな年表 (ヘブライ語など) の完全な表現が必要な場合や、独自の架空の暦体系 (たとえば、作成中のゲーム用) を定義できるようにしたい場合は、おそらく JODA または JRS-310 が最適です。そうでない場合は、自分でロールすることをお勧めします。
JSR-310 仕様のリーダーは、最初に JODA を書いた Stephen Colebourne であるため、論理的には JODAに取って代わることになります。
それはすべてあなたが日付で何をしているかに依存します。単にそれらを永続化する場合、Javaに組み込まれているDatesは、おそらく必要なすべてを実行します。ただし、広範囲にわたる日付の操作を行っている場合は、おそらくJodaを使用したほうがよいでしょう。
次の理由により、Joda-Time ライブラリを使用する必要があります。
Exception in thread "main"
org.joda.time.IllegalFieldValueException: Cannot parse "2014-02-31":
Value 31 for dayOfMonth must be in the range [1,28].
詳細については、次のページをご覧ください: http://swcodes.blogspot.com/