我有一个来自我的应用程序的 Timestamp 值。用户可以在任何给定的本地 TimeZone 中。
由于这个日期用于假定给定的时间总是在 GMT 中的 WebService,因此需要将用户的参数从 say (EST)转换为(GMT)。关键在于: 用户完全忘记了他的 TZ。他输入了要发送到 WS 的创建日期,因此我需要的是:
用户输入: 5/1/20086:12 PM (EST)
WS 的参数需要 : 5/1/20086: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;
}
对于前面的代码,我得到的结果是这样的(简短格式,方便阅读) :
[ May 1,200811:12 PM ]