J'ai une valeur d'horodatage qui provient de mon application. L'utilisateur peut se trouver dans n'importe quel fuseau horaire local.
Comme cette date est utilisée pour un WebService qui suppose que l'heure donnée est toujours en GMT, j'ai besoin de convertir le paramètre de l'utilisateur de disons (EST) en (GMT). Voici le problème : l'utilisateur n'est pas conscient de son TZ. Il entre la date de création qu'il veut envoyer au WS, donc ce dont j'ai besoin est :
L'utilisateur entre : 5/1/2008 6:12 PM (EST)
Le paramètre du WS doit être : 5/1/2008 6:12 PM (GMT)
Je sais que les TimeStamps sont toujours censés être en GMT par défaut, mais lors de l'envoi du paramètre, même si j'ai créé mon calendrier à partir du TS (qui est censé être en GMT), les heures sont toujours décalées, sauf si l'utilisateur est en GMT. Qu'est-ce qui m'échappe ?
Timestamp issuedDate = (Timestamp) getACPValue(inputs_, "issuedDate");
Calendar issueDate = convertTimestampToJavaCalendar(issuedDate);
...
private static java.util.Calendar convertTimestampToJavaCalendar(Timestamp ts_) {
java.util.Calendar cal = java.util.Calendar.getInstance(
GMT_TIMEZONE, EN_US_LOCALE);
cal.setTimeInMillis(ts_.getTime());
return cal;
}
Avec le code précédent, voici ce que j'obtiens comme résultat (format court pour une lecture facile) :
[1er mai 2008 11:12 PM]