Votre instance DateFormat affiche très probablement la valeur en heure locale. Lors de l'affichage de votre valeur, pour cette solution:
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: à votre commentaire:
Et si j'utilise GMT, serait-ce un problème dans SimpleDateFormat
SimpleDateFormat peut utilisez les fuseaux horaires généraux (GMT +/- n), RFC822 et le texte ("s'ils ont des noms" en tant qu'états JavaDoc - voir this post pour plus d'informations sur les noms).
Vous nous dites, vous êtes celui qui pose la question. Avez-vous réellement essayé? Cela ne donne-t-il pas les résultats que vous attendiez? Si oui, qu'attendez-vous et quels ont été les résultats? Et que vous dit la base de données lorsque vous utilisez son propre outil de requête? – kdgregory
Oui je l'ai essayé, oui ça ne donne pas les résultats que j'attends. La base de données a une valeur UTC et ce code ajoute en outre +8 à la valeur déjà existante dans DB. – kal
Je veux dire +8 heures – kal