что я делаю не так? результат выдаёт верный.
package com.javarush.task.pro.task16.task1618;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.Duration;
/*
Лишь бы не запутаться
*/
public class Solution {
public static void main(String[] args) {
ZoneId zone1 = ZoneId.of("Zulu");
ZoneId zone2 = ZoneId.of("Etc/GMT+8");
System.out.println(ZonedDateTime.now(zone1));
System.out.println(ZonedDateTime.now(zone2));
LocalDateTime time = changeZone(LocalDateTime.of(2020, 3, 19, 1, 40), zone1, zone2);
System.out.println(time);
}
static LocalDateTime changeZone(LocalDateTime fromDateTime, ZoneId fromZone, ZoneId toZone) {
ZonedDateTime fromTime = ZonedDateTime.now(fromZone); //вычисляем какое сейчас время в известной зоне
LocalDateTime fromDateTimeNow = fromTime.toLocalDateTime();
ZonedDateTime toTime = ZonedDateTime.now(toZone); //вычисляем какое сейчас время в искомой зоне
LocalDateTime toDateTimeNow = toTime.toLocalDateTime();
Duration duration = Duration.between(fromDateTimeNow, toDateTimeNow); // находим разницу во времени
LocalDateTime toDateTime = fromDateTime.plus(duration); // прибовляем разницу к указанному времени известной зоны
return toDateTime;
}
}