План был такой, что я просто определяю разницу между поясами и к текущему поясу прибавляю разницу, не пойму где косяк:) ответ вроде верный
package com.javarush.task.pro.task16.task1618;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.TimeZone;
/*
Лишь бы не запутаться
*/
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 time1 = ZonedDateTime.of(fromDateTime,fromZone);
TimeZone tz1 = TimeZone.getTimeZone(toZone);
TimeZone tz2 = TimeZone.getTimeZone(fromZone);
long timeDifference = tz1.getRawOffset() - tz2.getRawOffset() + tz1.getDSTSavings() - tz2.getDSTSavings();
LocalDateTime a = time1.toLocalDateTime().plusSeconds(timeDifference / 1000);
return a;
}
}