Преобразование метки времени Unix между разными часовыми поясами и разными летними данными в Java

ЗАДАЧА РЕШЕНА Внешнее устройство вычисляло и отправляло нестандартную сдвинутую временную метку на 2 часа, что сильно смутило меня и запустило этот поток.ВРЕМЕННЫЙ УРОВЕНЬ ОТ СЕБЯ НЕ ВЛИЯЕТ НА ВРЕМЕНИ , часовые пояса применяются только при конвертации в / из читаемых человеком форм.

У меня есть метка времени (секунды от эпохи Unix) в часовом поясе UTC - нет летнего времени (летнее время).

Я хочу метку времени (секунды от эпохи Unix) в "Европа / Прага» часовой пояс, который использует DST.

Раньше я думал, что временная метка unix не связана с часовыми поясами, что часовые пояса влияют только на процесс преобразования временной метки в удобочитаемые форматы. Но это нетак не выглядит. И чем больше я пытаюсь преобразовать его (используя классы Calendar и TimeZone), тем больше я запутываюсь и теряюсь.

этот код НЕ работает должным образом:

Calendar cal = GregorianCalendar.getInstance(TimeZone.getTimeZone("UTC"));
cal.setTimeInMillis(ts*1000);
cal.setTimeZone(TimeZone.getTimeZone("Europe/Prague"));
return cal.getTimeInMillis()/1000;

Ответы на вопрос(4)

Ваш ответ на вопрос