localdatetime 时区转换
时间: 2023-10-21 16:58:18 浏览: 39
要进行 `LocalDateTime` 的时区转换,你可以使用 `ZonedDateTime` 类。下面是一个示例代码,将一个 `LocalDateTime` 对象从一个时区转换为另一个时区:
```java
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
public class TimeZoneConversionExample {
public static void main(String[] args) {
// 创建一个 LocalDateTime 对象
LocalDateTime localDateTime = LocalDateTime.of(2022, 1, 1, 12, 0);
// 定义原始时区和目标时区
ZoneId sourceZone = ZoneId.of("Asia/Shanghai");
ZoneId targetZone = ZoneId.of("America/New_York");
// 将 LocalDateTime 转换为 ZonedDateTime,并指定原始时区
ZonedDateTime sourceZonedDateTime = localDateTime.atZone(sourceZone);
// 将 ZonedDateTime 转换为目标时区
ZonedDateTime targetZonedDateTime = sourceZonedDateTime.withZoneSameInstant(targetZone);
// 获取转换后的 LocalDateTime 对象
LocalDateTime targetLocalDateTime = targetZonedDateTime.toLocalDateTime();
System.out.println("原始 LocalDateTime: " + localDateTime);
System.out.println("目标 LocalDateTime: " + targetLocalDateTime);
}
}
```
在上述示例中,我们首先创建了一个 `LocalDateTime` 对象 `localDateTime`,然后定义了原始时区 `sourceZone` 和目标时区 `targetZone`。接下来,我们将 `localDateTime` 转换为 `ZonedDateTime` 对象,指定了原始时区。然后,我们使用 `withZoneSameInstant()` 方法将其转换为目标时区的 `ZonedDateTime` 对象。最后,我们使用 `toLocalDateTime()` 方法获取转换后的 `LocalDateTime` 对象 `targetLocalDateTime`。
你可以根据自己的需求修改示例