ПРОБЛЕМА РЕШЕНА Внешнее устройство вычисляло и отправляло нестандартную отметку времени, сдвинутую на 2 часа, что сильно смутило меня и привело к созданию этой темы. ОТМЕТКА ВРЕМЕНИ САМ ПО СЕБЕ НЕ ВЛИЯЕТ НА ВРЕМЯ ЧАСОВЫХ ПОЯСОВ , часовые пояса применяются только при преобразовании в/из удобочитаемых форм.
У меня есть временная метка (секунды от эпохи unix) в часовом поясе UTC - без летнего времени (летнее время).
Мне нужна отметка времени (секунды от эпохи unix) в часовом поясе «Европа/Прага», в котором используется летнее время.
Раньше я думал, что временная метка unix не привязана к часовым поясам, что часовые пояса влияют только на процесс преобразования временной метки в удобочитаемый формат. Но это не похоже на это. И чем больше я пытаюсь его преобразовать (используя классы Calendar и TimeZone), тем больше я путаюсь и теряюсь.
этот код НЕ работает должным образом:
Calendar cal = GregorianCalendar.getInstance(TimeZone.getTimeZone("UTC"));
cal.setTimeInMillis(ts*1000);
cal.setTimeZone(TimeZone.getTimeZone("Europe/Prague"));
return cal.getTimeInMillis()/1000;