[解決済み] Java日付と時間クラスを使うべきか、Joda Timeのようなサードパーティライブラリを使うべきか?
2022-05-08 16:37:40
質問
世界中の国々で使われるウェブベースのシステムを作っています。保存しなければならないデータの1つは、日付と時間です。
Java の日付と時刻のクラスを使用する利点と欠点は、次のようなサードパーティのライブラリと比較してどうでしょうか。 ヨーダ時間 ? これらのサードパーティライブラリは、それなりの理由があって存在しているのだと思いますが、私自身はあまり比較したことがありません。
解決方法は?
EDIT: Java 8がリリースされたので、それを使えるなら使いましょう!
java.time
は、Joda Timeよりさらにクリーンだと私は思います。しかし、もしあなたがJava-8以前に行き詰っているのなら、続きを読んでください...。
マックスはJodaを使うことの長所と短所を聞いてきました...。
長所
- とてもよく動きます。Jodaには、標準的なJavaライブラリよりもはるかに少ないバグがあるのではないかと強く思っています。Javaライブラリのバグのいくつかは、設計上、修正するのが本当に難しいです(不可能ではないにしても)。
- 日付や時間の処理について、正しい方法で考えるように設計されています。つまり、ローカルタイム(例:どこにいても午前7時に起こしてくれ)とインスタントタイム(例:午後3時にJamesに電話している、彼がいるところは午後3時ではないかもしれないが、同じ瞬間だ)の概念を分離するのです。
- タイムゾーンデータベースの更新が容易になると思いますが、これは する 比較的頻繁に変更される
- 不滅のストーリーをしっかり持っているので、人生を ロット IMEが楽になる。
- 不変性に続いて、すべてのフォーマッタがスレッドセーフであることは素晴らしいことです。 常に 一つのフォーマッタをアプリケーション全体で再利用したい。
-
を先取りして学ぶことができます。
java.time
は、少なくともある程度似ているため、Java 8 の
短所
- 別のAPIを学ぶ必要がある(ただし、ドキュメントはかなり充実している)
- ビルドとデプロイに必要なライブラリが1つ増える。
- Java 8を使用する場合、スキルの移行作業が残っています
-
を使いこなせなかった
DateTimeZoneBuilder
を効果的に使うことができます。これは 非常に しかし、稀な使用例です。
oxbow_lakes氏の、小さなAPIを効果的に自作するという考えに対して、なぜこれが悪いのかについて私の見解を述べます。
- それは仕事です。すでにされていることなのに、なぜするのでしょうか?
- あなたのチームの新人は、あなたの自作APIよりもJodaに精通している可能性が高いです。
- 最もシンプルな使い方以外では、間違う可能性が高い。 を考える シンプルな機能しか必要としないのに、少しずつ複雑になっていく習性があるんです。日付と時刻の操作は ハード を適切に行う必要があります。さらに、組み込みのJava APIは難しいので 使用 カレンダーAPIの日付/時刻の演算の動作ルールを見ればわかるように、適切に動作します。これらの上に何かを構築することは、最初によく設計されたライブラリを使用するよりも、むしろ悪い考えです。
関連
-
Eclipse起動エラー:javaは起動したが、終了コード=1を返した(ネット上の様々な落とし穴)
-
Google Chromeのエラー「Not allowed to load local resource」の解決策について
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] Androidで現在の時刻と日付を取得する方法
-
[解決済み] ThreadLocal変数はいつ、どのように使用すればよいですか?
-
[解決済み] C++で現在の時刻と日付を取得する方法は?
-
[解決済み] Javaで現在の日付と時刻をUTCまたはGMTで取得するにはどうすればよいですか?
-
[解決済み】JavaScriptで現在の日付と時刻を取得する
-
[解決済み】Joda Timeライブラリを使用して、日付文字列をDateTimeオブジェクトに変換する。
-
[解決済み】Java 8 の Date Time API (java.time) と Joda-Time の相違点
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
スタイルが読み込まれず、ブラウザのコンソールでエラーが報告される。リソースはスタイルシートとして解釈されますが、MIMEタイプtext/htmlで転送されます。
-
アクセス制限です。タイプ 'Application' は API ではありません。
-
Spring Boot による HTTPS アクセスの設定
-
Enumとの組み合わせでswitchの使い方を一度覚えるために必要な定数式
-
java Mail send email smtp is not authenticated by TLS encryption solution.
-
リソースの読み込みに失敗しました。サーバーはステータス500(内部サーバーエラー)で応答しました。
-
spring-boot 401 このリソースにアクセスするには完全な認証が必要です エラー解決
-
自動配線された依存性のインジェクションに失敗しました。
-
Eclipse起動エラー:javaは起動したが、終了コード=1を返した(ネット上の様々な落とし穴)
-
[解決済み] Java 日付とカレンダーの比較