我有同样的问题,找到答案并不明显。我们现在在生产中使用这个解决方案,它工作正常。它基于jodatime库
public static Date convertDateTimeZone(Date date, TimeZone currentTimeZone, TimeZone newTimeZone) {
return convertJodaTimezone(new LocalDateTime(date), DateTimeZone.forTimeZone(currentTimeZone), DateTimeZone.forTimeZone(newTimeZone));
}
public static Date convertDateTimeZone(Date date, TimeZone newTimeZone) {
return convertDateTimeZone(date, null, newTimeZone);
}
public static Date convertJodaTimezone(LocalDateTime date, String srcTz, String destTz) {
return convertJodaTimezone(date, DateTimeZone.forID(srcTz), DateTimeZone.forID(destTz));
}
public static Date convertJodaTimezone(LocalDateTime date, DateTimeZone srcTz, DateTimeZone destTz) {
DateTime srcDateTime = date.toDateTime(srcTz);
DateTime dstDateTime = srcDateTime.withZone(destTz);
return dstDateTime.toLocalDateTime().toDateTime().toDate();
}
您所要做的就是使用第一种方法将您的日期转换为特定的公共时区并进行比较。
要获取时区实例,您只需:
TimeZone.getTimeZone("BST");