Con Java 8 podemos devolver un Timestamp en UTC dada una fecha/hora local y el time zone de la misma.
Si además le aplicamos un formato con un objeto DateTimeFormatter, podemos devolver la fecha y la hora como deseemos.
/**
* Convierte la fecha con el time zone indicado a UTC
* @param localDateTime Fecha y hora local
* @param timeZone Time zone de la hora a convertir
* @return Devuelve un objeto Timpestamp con la hora en UTC
*/
public static Timestamp dateToUTCTimeStamp(LocalDateTime localDateTime, String timeZone){
ZonedDateTime zonedFechaExpiracion = ZonedDateTime
.now(ZoneId.of(timeZone)) // fecha y hora actual en la delegación
.with(localDateTime) // se asigna la fecha y hora que se recibe
.withZoneSameInstant(ZoneOffset.UTC); // convertimos a formato UTC
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
return Timestamp.valueOf(zonedFechaExpiracion.format(formatter));
}