Fecha de análisis con diferentes zonas horarias

Incluso con cerca de 15 años en Java, uno siempre tropieza con el tema de manejar fechas y horarios ...

Aquí está la situación: obtengo una marca de tiempo de algún sistema externo comoString representación. La semántica de la marca de tiempo es que representa una fecha UTC. Esta marca de tiempo se debe colocar en una entidad y luego en una base de datos PostgreSQL en unaTIMESTAMP campo. Además, necesito poner la misma marca de tiempo que la hora local (en mi caso CEST) en la entidad y luego en la base de datos en unaTIMESTAMP WITH TIME ZONE campo.

¿Cuál es la forma correcta de garantizar que, independientemente de la configuración de la máquina que ejecuta el código, las marcas de tiempo se almacenen correctamente en la entidad (para realizar algunas validaciones con otras marcas de tiempo UTC) y en la base de datos (para usarlas en los informes más adelante)? en)?

Aquí está el código, que funcionó bien en mi máquina local:

<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>

Pero al ejecutar el mismo código en el servidor, se generaron tiempos diferentes, por lo que asumo que no es la forma correcta de manejarlo. ¿Alguna sugerencia?

PD: Leí sobre Joda Time cuando busqué en este foro, pero en el proyecto dado no puedo introducir nuevas bibliotecas ya que solo cambio un módulo existente, así que tengo que vivir con el estándar JDK1.6

Respuestas a la pregunta(3)

Su respuesta a la pregunta