将 UTC 偏移日期转换为不同的时区

Convert UTC offset date to different time zone

我想将日期及其 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();
    }

需要检查这是否是有效的方法。

你的做法是正确的。但是,如果可能的话,我建议首先使用 ZonedDateTime 或 OffsetDateTime。在这种情况下,时区之间的切换要容易得多。对于 ZonedDateTime 切换到不同的时区只是一种方法:public ZonedDateTime withZoneSameInstant(ZoneId zone)