首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据LocalTime调整ZoneId

根据LocalTime调整ZoneId
EN

Stack Overflow用户
提问于 2017-06-07 14:52:42
回答 2查看 5.6K关注 0票数 5

给定LocalTime中的ZoneId,如何在UTC上找到经调整的LocalTime

我正在寻找类似于.atZoneLocalDateTime,但什么也找不到。

我怀疑我可以在atOffset中使用它,但我并不真正理解如何使用它。

例如:

代码语言:javascript
复制
LocalTime: 15:00
ZoneId: America/Sao_Paulo (GMT -3)
Output: 18:00
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-07 15:17:28

你也得给我个约会。例如,如果区域有夏季时间(DST),则需要这样做才能应用正确的偏移量(我不知道圣保罗是否使用夏季时间,但Java总是需要一个日期)。

不过,这比你预期的要多一步,但一旦你知道了,它就足够简单了。对于演示的例子,我认为你指的是今天15:00,而你几乎没有做到,但我相信你会自己填写所需的日期。

代码语言:javascript
复制
    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);

这将打印出您所要求的结果。

代码语言:javascript
复制
18:00
票数 10
EN

Stack Overflow用户

发布于 2017-06-07 15:12:48

由于缺少日期,所以ZoneId没有意义,但是您可以这样使用ZoneOffset

代码语言:javascript
复制
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
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44416075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档