为了账号安全,请及时绑定邮箱和手机立即绑定

如何通过UTC偏移量获取时区?

如何通过UTC偏移量获取时区?

手掌心 2021-04-19 21:22:38
我的UTC偏移量为-05:00,我想按偏移量获取时区名称。ZoneOffset offset = ZoneOffset.of("-05:00");System.out.println(offset.getId()); //prints -05:00我想得到这样的结果:America/ChicagoAmerica/EirunepeEtc/GMT+5Mexico/General ...我想要-05:00现在偏移的时区(而不是一年中其他时间的时区)。
查看完整描述

3 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

是的,您可以执行此操作,请查看此内容。


final List<ZoneId> timeZoneByUtc = ZoneId.getAvailableZoneIds().stream().map(ZoneId::of)

        .filter(z -> z.getRules().getOffset(Instant.now()).equals(ZoneOffset.ofHours(-5)))

        .collect(Collectors.toList());


查看完整回答
反对 回复 2021-04-28
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

首先确定何时是“现在”:使用Instant.now()(如果您想要一个一致的答案,请Instant.now()仅拨打一次)。

然后遍历所有可用时区,并包括现在处于偏移-05:00的时区。首先从中获取可用的时区ID作为字符串ZoneId.getAvailableZoneIds()。对于每个,从中获取相应的ZoneId对象ZoneId.of(String)。现在有多种获取偏移量的方法。一种是yourZoneId.getRules().getOffset(rightNow)rightNow您的位置在哪里Instant)。这为您提供了一个ZoneOffset对象,您可以offset使用将该对象与您的问题进行比较.equals(Object)


查看完整回答
反对 回复 2021-04-28
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

public class Main {


    public static void main(String[] args) {


        TimeZone tz = TimeZone.getTimeZone("GMT-05:00");

        String a[] = TimeZone.getAvailableIDs(tz.getOffset(System.currentTimeMillis()));

        for (int i = 0; i < a.length; i++) {

            System.out.println(a[i]);

        }

    }

}

O / P


美洲/阿蒂科坎美洲/波哥大美洲/坎昆美洲/开曼美洲/珊瑚港美洲/底特律美洲/爱伦尼普美洲/ Fort_Wayne美洲/大特克美洲/瓜亚基尔美洲/哈瓦那...


查看完整回答
反对 回复 2021-04-28
  • 3 回答
  • 0 关注
  • 260 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信