世界中の国々で使用されるウェブベースのシステムを作成しています。保存する必要があるデータのタイプの1つは、日付と時刻です。
Joda timeなどのサードパーティライブラリと比較して、Javaの日時クラスを使用することの長所と短所は何ですか?これらのサードパーティライブラリは正当な理由で存在すると思いますが、実際に自分で比較したことはありません。
世界中の国々で使用されるウェブベースのシステムを作成しています。保存する必要があるデータのタイプの1つは、日付と時刻です。
Joda timeなどのサードパーティライブラリと比較して、Javaの日時クラスを使用することの長所と短所は何ですか?これらのサードパーティライブラリは正当な理由で存在すると思いますが、実際に自分で比較したことはありません。
回答:
編集:Java 8がリリースされたので、それを使用できる場合は、リリースしてください!java.time
私の考えでは、ジョーダタイムよりもきれいです。ただし、Java-8より前のバージョンでスタックしている場合は、以下を読んでください...
マックスはジョーダを使用することの長所と短所を求めました...
長所:
java.time
Java 8での学習は、少なくともある程度は似ているので、すぐに始めることができます。短所:
DateTimeZoneBuilder
過去に効果的に使用するのに失敗しました。ただし、これは非常にまれなユースケースです。独自の小さなAPIを効果的に構築するというoxbow_lakesの考えに対応するために、これが悪い考えである理由についての私の見解を以下に示します。
java.time.*
ます。Java 6と7のためのthreeten.org/threetenbp
まあ、Java 8を待つつもりがない限り、日付と時刻を操作するためのより良いAPIを実装することを期待しているので、はい、Joda-Timeを使用してください。時間を節約し、多くの頭痛の種を避けます。
答えは:それは異なり
JODA(およびJSR-310)は、複数のカレンダーシステムでの使用を含む、完全に機能する日付/時刻ライブラリです。
個人的には、JODAは自分が必要とするものの複雑さの観点からは一歩遠すぎると感じました。標準のJava Date
およびCalendar
クラスの2つの主要な(IMHO)ミスは次のとおりです。
これらはJODAで対処されていますが、YearMonthDay
andの独自のクラスをロールするのは非常に簡単であることがわかりますInstant
。そうすれば、100クラスを超えるAPI、別のフォーマット/解析メカニズムなどに慣れる必要はありません。
もちろん、異なる暦(ヘブライ語など)の完全な表現が必要な場合、または独自の架空のカレンダーシステム(たとえば、作成中のゲーム)を定義できるようにしたい場合は、おそらくJODAまたはJRS-310が適しています。そうでない場合は、自分でロールすることをお勧めします。
JSR-310仕様のリードは、JODAを最初に書いたStephen Colebourneであり、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/