2016-07-18 2 views
1

Я пытаюсь преобразовать withWeekOfWeekyear в java.time. Я не могу понять, почему у меня другое смещение withWeekOfWeekyear по сравнению с weekOfWeekBasedYear.Почему сWeekOfWeekyear дает мне другое смещение?

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 является зоной времени.

A DateTime рассчитывает свои поля относительно time zone.

java.time.OffsetDateTime является не часового пояса известно, то есть не настроить на летнее время.

OffsetDateTime добавляет к моменту смещения от UTC/Greenwich, что позволяет получить локальную дату-время. ZonedDateTime добавляет правила полных часовых поясов.

java.time.ZonedDateTimeявляется часовой пояс известно, так что если вы используете это, вы должны получить тот же результат.

ZonedDateTime - неизменное представление даты-времени с часовым поясом.