给定LocalTime
中的ZoneId
,如何在LocalTime
上找到调整后的UTC
?
我正在从.atZone
寻找类似于LocalDateTime
的东西,但找不到任何东西。
我怀疑我可以将它与atOffset
一起使用,但是我不太了解如何使用它。
因此,例如:
LocalTime: 15:00
ZoneId: America/Sao_Paulo (GMT -3)
Output: 18:00
最佳答案
您也需要指定日期。例如,如果该区域具有夏令时(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
关于java-8 - 根据ZoneId调整LocalTime,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44416075/