Разбор даты с разными часовыми поясами

Даже с 15-летним стажем в Java каждый всегда сталкивается с темой обработки дат и времени ...

Вот ситуация: я получаю метку времени от некоторой внешней системы какString представление. Семантика временной метки состоит в том, что она представляет дату UTC. Эта временная метка должна быть помещена в объект, а затем в базу данных PostgreSQL вTIMESTAMP поле. Кроме того, мне нужно поместить ту же метку времени, что и местное время (в моем случае CEST) в объект, а затем в базу данных вTIMESTAMP WITH TIME ZONE поле.

Как правильно гарантировать, что независимо от настроек машины, выполняющей код, временные метки будут правильно храниться в объекте (для выполнения некоторых проверок с другими временными метками UTC) и в базе данных (чтобы использовать их в отчетах позже на)?

Вот код, который отлично работал на моей локальной машине:

<code>SimpleDateFormat sdfUTC = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
sdfUTC.setTimeZone(TimeZone.getTimeZone("UTC"));
Date utcTimestamp = sdfUTC.parse(utcTimestampString);
// getMachinesTimezone is some internal util method giving the TimeZone object of the machines Location
Calendar localTimestamp = new GregorianCalendar(getMachinesTimezone());
localTimestamp.setTimeInMillis(utcTimestamp.getTime());
</code>

Но при выполнении одного и того же кода на сервере это приводило к разным временам, поэтому я предполагаю, что это неправильный способ его обработки. Какие-либо предложения?

PS: я читал о Joda Time при поиске на этом форуме, но в данном проекте я не могу вводить новые библиотеки, так как я только меняю существующий модуль, поэтому мне приходится жить со стандартным JDK1.6

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

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