我需要将Java App中的日期从Google App Engine本地服务器时区转换为太平洋时间。

我尝试使用

Calendar calstart =
Calendar.getInstance();

calstart.setTimeZone(TimeZone.getTimeZone("PST"));
//calstart.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));

Date startTime = calstart.getTime();

但这给了我错误的时间(实际PST是10pm时大约是4pm)。还尝试使用注释行America/Los_Angeles注释,但在GAE服务器上给出的时间不正确。

有什么想法/建议吗?

最佳答案

使用Joda Time,您需要的只是DateTime.withZone方法。下面的例子:

public static Date convertJodaTimezone(LocalDateTime date, String srcTz, String destTz) {
    DateTime srcDateTime = date.toDateTime(DateTimeZone.forID(srcTz));
    DateTime dstDateTime = srcDateTime.withZone(DateTimeZone.forID(destTz));
    return dstDateTime.toLocalDateTime().toDateTime().toDate();
}

建议,切勿使用默认API进行与时间相关的计算。真可怕Joda似乎是最好的替代API。

10-06 14:41