設計上の選択興味 - LOCALDATEオブジェクトに焼き>日付とその逆 - LOCALDATEためのシンプルなコンバータを内蔵していないために設計上の決定についての信頼できるソースはありますか?
私は完全に不格好で周りにこれらのオブジェクトを移動するのでうんざりしています
java.util.Date.from(dateToConvert.atStartOfDay()
.atZone(ZoneId.systemDefault())
.toInstant());
そしてもう一つ、
dateToConvert.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDateTime();
私はdate.toLocalDate(NULL可能するzoneidを)持っていないことを知っていながら、それは少なくとも、(理由を知るためにいくつかの使用であろうだけなので、私が今までと同じロジックを使用して意思決定を正当化することはありません場合)。
何の整数にFileオブジェクトをオンにする変換方法であっ内蔵されている理由をあなたにもお願いしていないかもしれません:2種類がほぼ完全に無関係です。
しかし、私は、あなたが言うのを聞く電話を保持し、rzwitserloot!あなたは一体何についてでありますか?Date
そして、LocalDate
している無関係な ???
はい、そうです。
そのためには、java.util.Date
愚かな名前です。それがありますしないで何をj.u.Date
表しています。このオブジェクト内のすべての日付関連のメソッドが非推奨とされている理由です。名前付きクラスがいることを確認するとDate
呼ばれる方法があるgetHours
ことができればという名前の誰それがあったといい指標でなければなりませんが、ちょうど「一日オフ持つ」で行きましょう。それは何の日がaintのありません。
j.u.Date
「時間の瞬間」を表しています。これは、と完全に同等ですjava.time.Instant
。その内部ストレージは、単一の長い表す画期的ミリ秒で、より何も。
これは、との一切ほとんど関係がありませんLocalDate
。
はい、MANYシステムが使用j.u.Date
同じ概念表現する方法として、オブジェクトをLocalDate
表現するためにしようとしているが、それはある、それらのシステムが台無しにするので、それのために完全に不適切なタイプを使用しています。彼らは免除することができます。彼らはあなたがした同じトラップのために落ちた:彼らは、このクラスの名前ではオフに投げてしまいました。
さて、しかし、ねえ、私たちは非常に多くの時間が「私は、この変換する必要があるのでことを考えると、おとぎ話のようなものをこの世界に住んでいない:1つは、おそらく、主張するかもしれないj.u.Date
とLocalDate
まで来る」、それは右、簡単にすべきですか?まあ、それは共通であるという理由だけで悪い行動を可能に-レッツちょうど言葉はそれは良いアイデアだかどうかに出ていると言います。また、そのジョブは、むしろ基本的に非常に非常にトリッキーです。どのように我々は、この変換を行うのですか?で表されるように、私は時間に時間を取る必要があるj.u.Date
オブジェクト、実際のカレンダーの日付はのように、サーバーがどこに行く(現在のシステムのデフォルトロケールであるかチェックしてください。今の建物を出て行く。人を検索します。それらを依頼?:それは今何日である彼らは何を答えてください) -または彼らはUTCロケールを行くべきか?(グリニッジに移動し、そこに頼むそれが夏である場合を除き、その後、頼む:それは一時間前だった何日?)。
答えは明らかに同じではありません多くの場合、まだどちらの戦略が明らかに他よりも優れています。したがって、このようなAの便利なメソッドを作ることは、単に混乱の叙事詩連を引き起こすことが起こっています。ないより多くの場合は、情報の重要なビットを逃している-変換の仕事j.u.Date
にすることはLocalDate
あなたが持っている情報のすべての不足しているビットにコインを喜んで投げるだけのためにしている場合を除き、さらにコンテキストなしで行うことはできません。あなたにも呼び出すかもしれないRandom
インスタンスの.nextInt(365)
それを把握します。