如何使用时区偏移格式化 LocalDateTime

2023-12-26

我尝试这样做:

    ZoneOffset zoneOffset = ZoneOffset.ofHours(3);
    DateTimeFormatter fmt = DateTimeFormatter.ofPattern("HH:mm:ss");

    LocalDateTime dateTime = LocalDateTime.now();
    System.out.println("dateTimeWithoutOffset: " + fmt.format(dateTime));

    ZonedDateTime zonedDateTime = ZonedDateTime.of(dateTime, zoneOffset);
    System.out.println("dateWithOffset: " + fmt.format(zonedDateTime));

但我得到相同的输出:

dateTimeWithoutOffset: 18:11:06
dateTimeWithOffset: 18:11:06

我想看到这样的东西:

dateTimeWithoutOffset: 18:11:06
dateTimeWithOffset: 21:11:06

我究竟做错了什么?


如果您想使用区域偏移,OffsetDateTime会比一个更有意义ZonedDateTime.

要将偏移量应用到本地时间,一种方法是指定时间为 UTC,而您希望本地时间位于不同的时区。所以它可能看起来像:

OffsetDateTime timeUtc = dateTime.atOffset(ZoneOffset.UTC); //18:11:06 UTC
OffsetDateTime offsetTime = timeUtc.withOffsetSameInstant(zoneOffset); //21:11:06 +03:00
System.out.println("dateWithOffset: " + fmt.format(offsetTime)); //21:11:06
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用时区偏移格式化 LocalDateTime 的相关文章

随机推荐