2016-07-18 14 views
1

withWeekOfWeekyearをjava.timeに変換しようとしています。 weekOfWeekBasedYearと比較して、なぜwithWeekOfWeekyearで別のオフセットが得られるのかわかりません。withWeekOfWeekyearが私に異なるオフセットを与えるのはなぜですか?

DateTime dateTimeWeek = new DateTime().withWeekOfWeekyear(1); 
    OffsetDateTime offsetDateTimeWeek = OffsetDateTime.now().with(WeekFields.ISO.weekOfWeekBasedYear(), 1); 

    DateTime dateTime = new DateTime(); 
    OffsetDateTime offsetDateTime = OffsetDateTime.now(); 

    System.out.println(dateTimeWeek); // 2016-01-04T12:20:50.981-05:00 
    System.out.println(offsetDateTimeWeek); // 2016-01-04T12:20:51.034-04:00 

    System.out.println(dateTime); // 2016-07-18T12:20:51.101-04:00 
    System.out.println(offsetDateTime); // 2016-07-18T12:20:51.101-04:00 

答えて

1

org.joda.time.DateTimeはタイムゾーンを認識しています。

DateTimeは、time zoneに関してフィールドを計算します。

java.time.OffsetDateTimeは夏時間を調整しない、すなわち、ないタイムゾーンを認識しています。

OffsetDateTimeは、現時点では、ローカル日時を取得することができるUTC /グリニッジからのオフセットを追加します。 ZonedDateTimeは完全なタイムゾーンルールを追加します。

java.time.ZonedDateTime意識時間帯なので、あなたがいることを使用する場合は、同じ結果を得る必要があります。

ZonedDateTimeは、タイムゾーンでの日付時刻の不変表現です。

関連する問題