LocalDateTimeからのDateTimeを作成し、これらの二つの方法の違いは何ですか?

ビニー:

私たちのアプリケーションの用途は、我々は少しのようになりますモデルクラスで時間を保存する(API書式設定の理由で)時間を処理するためにjodatime、と:

class Event {
    private LocalDateTime localTime;
    private DateTimeZone timeZone;

    public DateTime getTime() {
        return localStopTime.toDateTime(timeZone);
    }

    public void setTime(DateTime value) {
        this.localTime = value.toLocalDateTime();
        this.timeZone = value.getZone();
    }
    // ...more boilerplate
}

さらに下流私は、我々が設定されたよりも外に異なる時間になっていた気づきました。私は地元のフィールドが正しい値を持っているように見えるので、私たちは、バックのDateTime間違っにフィールドを変換した考え出しました。

:私はゲッターを変更しようとしたし、今では動作しますが、私は、なぜ分からない気まぐれで

    public DateTime getTime() {
        return localStopTime.toDateTime().withZone(timeZone);
    }

ジョダドキュメントは少しそれが行われるかについてタイトな口を閉ざしているtoDateTime()コールを。それは、「用途」何とか特定のタイムゾーンを言いますが、それはそれです。

誰でも違いが間にあるものを私に説明できます

return localStopTime.toDateTime(timeZone);

そして

return localStopTime.toDateTime().withZone(timeZone);

前もって感謝します!

編集: - 私は私の時間帯として「など/ GMT」を使用して、そのアカウントの夏時間にかかりませんでしたして、私はそれを考え出しました。正しいとしてマルコの答えをマークしています

マルコ・マルケッティ:

これら2つの違いは、あなたが使用し、次のいずれかwithZone()に:(としてのJavaDocを言います)

ミリ秒の瞬間を保存し、別の時間帯で、この日時のコピーを返します。

また、のJavaDocは、良い例を提供します。

この方法は、別のタイムゾーンでローカルタイムを見つけるのに便利です。この瞬間は、ヨーロッパ/ロンドンで午前12時30分を保持している場合たとえば、ヨーロッパ/パリで、この方法の結果13:30となります。

そして、あなたが使うtoDateTime(timeZone)返すためにDateTimeオブジェクトを指定したが、適用するtimeZoneことに。

だから、あなたが使用することができtoDateTime(timeZone).withZone(secondTimeZone)、あなたがのコピーを取得しますDateTime最初の文(によって生成されたがtoDateTime(timeZone))しかし、別の時間帯で、milisecondの瞬間をperseving。あなたが使用している場合やtoDateTime()、パラメータなしで、唯一取得しますDateTimeオブジェクトを。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=219571&siteId=1