Почему я попадаю в Дату прибытия музея +7 часов? - PullRequest
0 голосов
/ 01 июня 2019

Когда я перенесу время из ZonedDateTime в Date, я получаю время, увеличенное ровно на 7 часов в музее прибытия.В чем причина?

public static String determine(final String departureTime, final String city)
            throws ParseException {



        final ZoneId leavingZone = ZoneId.of("Europe/Minsk");
        final ZonedDateTime departure = ZonedDateTime.of(LocalDateTime.parse(departureTime),
                leavingZone);

        final ZoneId arrivingZone = ZoneId.of("Europe/London");
        final ZonedDateTime arrival = departure.withZoneSameInstant(arrivingZone).plusMinutes(270);

        final Instant instant = arrival.toInstant();
        final Date arrivalMuseum = Date.from(instant);
}

1 Ответ

1 голос
/ 01 июня 2019

Существует причина, по которой Date совместим только с классом Instant пакета java.time. Это потому, что это касается только даты в вашем личном часовом поясе.

Поэтому, когда вы печатаете объект arrivalMuseum, он автоматически преобразуется в любой часовой пояс, в котором вы сейчас находитесь. Учитывая разницу во времени в 7 часов, это, вероятно, UTC+8.

Если вам действительно нужно использовать старый API, вам нужно использовать API Calendar, чтобы получить дату, отформатированную для определенного часового пояса, но есть причины, по которым был создан новый API даты / времени, и работа с другими часовыми поясами один из них.

...