【发布时间】:2010-09-18 19:27:30
【问题描述】:
我有一个来自我的应用程序的时间戳值。用户可以在任何给定的本地时区。
由于此日期用于假定给定时间始终为 GMT 的 WebService,因此我需要将用户的参数从 (EST) 转换为 (GMT)。这是踢球者:用户忘记了他的 TZ。他输入他要发送给 WS 的创建日期,所以我需要的是:
用户输入: 2008 年 5 月 1 日下午 6:12(美国东部标准时间)
WS 的参数需要是:2008 年 5 月 1 日 6下午 12 点(格林威治标准时间)
我知道默认情况下 TimeStamps 总是应该在 GMT 中,但是在发送参数时,即使我从 TS(应该在 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]
【问题讨论】:
-
为什么只更改时区而不转换日期/时间?
-
获取一个时区的 Java 日期,然后在另一个时区获取 那个 日期是一件非常痛苦的事情。即,在美国东部夏令时间下午 5 点参加,并在太平洋夏令时间下午 5 点参加。