Mat*_*208 4 timezone localtime timezone-offset java-8 java-time
给定一个LocalTime
给定的ZoneId
,如何找到调整后LocalTime
的UTC
?
我在寻找类似的东西.atZone
从LocalDateTime
,但没有发现任何东西.
我怀疑我可以使用它atOffset
,但我真的不明白如何使用它.
例如:
LocalTime: 15:00
ZoneId: America/Sao_Paulo (GMT -3)
Output: 18:00
Run Code Online (Sandbox Code Playgroud)
你也需要约会.例如,如果区域有夏令时(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);
Run Code Online (Sandbox Code Playgroud)
这将打印您要求的结果
18:00
Run Code Online (Sandbox Code Playgroud)
A 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:00
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2003 次 |
最近记录: |