アプリケーションからの Timestamp 値があります。ユーザーは、任意のローカル TimeZone にいることができます。
この日付は、指定された時間が常に GMT であると想定する WebService に使用されるため、ユーザーのパラメーターを (EST) から (GMT) に変換する必要があります。ここにキッカーがあります: ユーザーは自分の TZ に気づいていません。彼は WS に送信したい作成日を入力するので、必要なものは次のとおりです。
ユーザー入力: 5/1/2008 6:12 PM (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;
}
前のコードでは、これが結果として得られるものです (読みやすいように短い形式)。
[2008 年 5 月 1 日午後 11 時 12 分]