Java日付をOffsetDateTimeに変換する
1. 序章
このチュートリアルでは、DateとOffsetDateTimeの違いについて学習します。 また、一方から他方に変換する方法も学びます。
2. DateとOffsetDateTimeの違い
OffsetDateTime は、java.util.Dateの最新の代替手段としてJDK8で導入されました。
OffsetDateTime は値ベースのクラスです。つまり、参照を比較するときは、通常の==の代わりにequalsを使用する必要があります。
ResetDateTimeのtoStringメソッドの出力はISO-8601形式ですが、DateのtoStringはカスタムの非標準形式。
両方のクラスでtoStringを呼び出して、違いを確認してみましょう。
Date: Sat Oct 19 17:12:30 2019
OffsetDateTime: 2019-10-19T17:12:30.174Z
Dateはタイムゾーンと対応するオフセットを保存できません。 Date オブジェクトに含まれるのは、1970年1月1日00:00:00 UTCからのミリ秒数だけです。したがって、時刻がUTCでない場合は、タイムゾーンをに保存する必要があります。ヘルパークラス。 逆に、ResetDateTimeはZoneOffsetを内部に格納します。
3. DateをOffsetDateTimeに変換しています
DateからOffsetDateTimeへの変換は非常に簡単です。 Date がUTCの場合、次の1つの式で変換できます。
Date date = new Date();
OffsetDateTime offsetDateTime = date.toInstant()
.atOffset(ZoneOffset.UTC);
元のDateがUTCにない場合は、オフセットを指定できます(前述のように、Dateクラスはタイムゾーンを保存できないため、ヘルパーオブジェクトに保存されます)。
元の日付が+3:30(テヘラン時間)であるとしましょう。
int hour = 3;
int minute = 30;
offsetDateTime = date.toInstant()
.atOffset(ZoneOffset.ofHoursMinutes(hour, minute));
ResetDateTime は、後で使用できる多くの便利なメソッドを提供します。 たとえば、簡単にできます getDayOfWeek() 、 getDayOfMonth() 、 と
とりわけ、非推奨のDateクラスを完全に回避することをお勧めします。
4. 結論
このチュートリアルでは、DateからOffsetDateTimeへの変換がいかに簡単であるかを学びました。
そして、いつものように、コードはGithubで利用できます。