我想将日期及其 UTC 偏移量转换为不同的时区。
假设我得到 2021-06-14 06:56:00
(这是本地日期时间),UTC 偏移量为 +3
小时,我需要将此本地日期时间转换为 LosAngeles
时区(UTC -8 小时) .为了实现这一点,我编写了以下代码段:
public static LocalDateTime toPstTimeZone(LocalDateTime localDateTime, int utcOffset) {
final var pstUtcOffset = ZoneOffset.ofHours(-8);
return localDateTime
.atOffset(ZoneOffset.ofHours(utcOffset))
.withOffsetSameInstant(pstUtcOffset)
.toLocalDateTime();
}
需要检查这是否是有效的方法。
答案 0 :(得分:2)
你的方法是正确的。但是,如果可能的话,我建议从 ZonedDateTime 或 OffsetDateTime 开始工作。在这种情况下,时区之间的切换要容易得多。对于 ZonedDateTime 切换到不同时区只是一种方法:public ZonedDateTime withZoneSameInstant(ZoneId zone)