ПРОБЛЕМА РЕШЕННАЯ Внешнее устройство предназначалось для вычисления и отправки нестандартных 2-х часов сдвинутой метки времени, которые очень смутили меня и начали эту тему. TIMESTAMP BY СЕБЯ НЕ ЗАНЯТОСЬ ОТ ВРЕМЕНИ, временные интервалы применяются только при преобразовании в/из человекообразных форм.Конвертировать временную метку unix между различными часовыми поясами и различными DST в Java
У меня есть метки времени (в секундах от эпохи Unix) в UTC часовой пояс - не DST (летнее время).
Я хочу отметку времени (в секундах от эпохи 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;
Что это делает? Что происходит, когда вы распечатываете кал между каждой строкой кода? –
Возможно, вам стоит указать, будете ли вы интересны [Joda-Time] (http: //joda-time.sourceforge.net /), потому что я подозреваю, что вы начнете их получать. –
@Peter для недавней отметки времени «1366642620» она вернула ту же самую - конверсии не произошло. Если я попытаюсь распечатать эту метку времени в PHP в UTC и временах в Европе/Праге, я получаю разное время: 14:57 и 16:57 – David162795