给定LocalTime中的ZoneId,如何在UTC上找到经调整的LocalTime
我正在寻找类似于.atZone的LocalDateTime,但什么也找不到。
我怀疑我可以在atOffset中使用它,但我并不真正理解如何使用它。
例如:
LocalTime: 15:00
ZoneId: America/Sao_Paulo (GMT -3)
Output: 18:00发布于 2017-06-07 15:17:28
你也得给我个约会。例如,如果区域有夏季时间(DST),则需要这样做才能应用正确的偏移量(我不知道圣保罗是否使用夏季时间,但Java总是需要一个日期)。
不过,这比你预期的要多一步,但一旦你知道了,它就足够简单了。对于演示的例子,我认为你指的是今天15:00,而你几乎没有做到,但我相信你会自己填写所需的日期。
LocalTime time = LocalTime.of(15, 0);
LocalTime utcTime = LocalDateTime.of(LocalDate.now(), time)
.atZone(ZoneId.of("America/Sao_Paulo"))
.withZoneSameInstant(ZoneOffset.UTC)
.toLocalTime();
System.out.println(utcTime);这将打印出您所要求的结果。
18:00发布于 2017-06-07 15:12:48
由于缺少日期,所以ZoneId没有意义,但是您可以这样使用ZoneOffset:
LocalTime time = LocalTime.of(15, 0);
ZoneOffset offset = ZoneOffset.ofHours(-3);
LocalTime utc =
OffsetTime.of(time, offset).withOffsetSameInstant(ZoneOffset.UTC).toLocalTime();
System.out.println(utc); // 18:00https://stackoverflow.com/questions/44416075
复制相似问题