我试着这样做:
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));
Run Code Online (Sandbox Code Playgroud)
但我得到相同的输出:
dateTimeWithoutOffset: 18:11:06
dateTimeWithOffset: 18:11:06
Run Code Online (Sandbox Code Playgroud)
我想看到这样的事情:
dateTimeWithoutOffset: 18:11:06
dateTimeWithOffset: 21:11:06
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
ass*_*ias 10
如果你想使用区域偏移,OffsetDateTime那么比a更有意义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
Run Code Online (Sandbox Code Playgroud)