У меня есть значение Timestamp, которое приходит из моего приложения. Пользователь может находиться в любом локальном часовом поясе.
Поскольку эта дата используется для WebService, которая предполагает, что указанное время всегда находится в GMT, мне нужно преобразовать параметр пользователя из say (EST) в (GMT). Здесь кикер: Пользователь не обращает внимания на свою TZ. Он вводит дату создания, которую хочет отправить на WS, поэтому мне нужно:
Пользователь вводит: 5/1/2008 6:12 вечера (EST)
Параметр для WS должен быть: 5/1/2008 6:12 PM (GMT)
Я знаю, что TimeStamps всегда должны быть в GMT по умолчанию, но при отправке параметра, хотя я создал свой календарь из TS (который должен быть в GMT), часы всегда выключены, если пользователь не в GMT. Что мне не хватает?
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;
}
С предыдущим кодом это то, что я получаю в результате (Short Format для легкого чтения):
[1 мая 2008 г. 11:12]