L'istanza di DateFormat è molto probabile che mostri il valore in ora locale. Quando si visualizza il tuo valore, dare una prova:
java.util.Calendar cal = Calendar.getInstance();
cal.setTimeZone(TimeZone.getTimeZone("UTC"));
java.sql.Timestamp ts = resultSet.getTimestamp(PUBLISH_TIME);
cal.setTime(ts);
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss z");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println(sdf.format(cal.getTime()));
EDIT: al tuo commento:
cosa se uso GMT, vorrei che essere un problema in SimpleDateFormat
SimpleDateFormat può utilizzare i fusi orari generali (GMT +/- n), RFC822 e il testo ("se hanno nomi" come afferma JavaDoc - vedere this post per informazioni sui nomi).
Dicci, sei tu a fare la domanda. L'hai provato? Non fornisce risultati che ti aspettavi? Se sì, allora cosa ti aspettavi e quali sono stati i risultati che ha dato? E cosa ti dice il database quando usi il suo strumento di query? – kdgregory
Sì, l'ho provato, sì, non sta dando i risultati che mi aspetto. Il database ha un valore UTC e questo codice aggiunge ulteriormente +8 al valore già esistente nel DB. – kal
Voglio dire +8 ore – kal