1、使用 java.util.TimeZone 类进行时区转换。可以使用 TimeZone 类的静态方法获取某个时区的实例,例如 TimeZone.getTimeZone("Asia/Shanghai"),然后使用 SimpleDateFormat 进行时间格式化,将时间从一个时区转换为另一个时区。

示例代码:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

formatter.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); // 设置源时区

Date sourceDate = formatter.parse("2023-03-15 10:00:00");

formatter.setTimeZone(TimeZone.getTimeZone("America/New_York")); // 设置目标时区

String targetDate = formatter.format(sourceDate);

System.out.println(targetDate); // 输出:2023-03-14 21:00:00

2、使用 java.time 包中的类进行时区转换。Java 8 引入了新的日期和时间 API,提供了更好的时区转换支持。可以使用 ZonedDateTime 类将一个本地日期时间转换为特定时区的日期时间。

示例代码:

LocalDateTime sourceDateTime = LocalDateTime.parse("2023-03-15T10:00:00");

ZoneId sourceTimeZone = ZoneId.of("Asia/Shanghai");

ZonedDateTime sourceZonedDateTime = ZonedDateTime.of(sourceDateTime, sourceTimeZone);

ZoneId targetTimeZone = ZoneId.of("America/New_York");

ZonedDateTime targetZonedDateTime = sourceZonedDateTime.withZoneSameInstant(targetTimeZone);

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

String targetDateTime = formatter.format(targetZonedDateTime);

System.out.println(targetDateTime); // 输出:2023-03-14 21:00:00

以上两种方式都可以实现时区转换,具体使用哪种方式取决于项目的实际需求和个人喜好。