首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Java获取国家代码所在地区的时区

用Java获取国家代码所在地区的时区
EN

Stack Overflow用户
提问于 2018-05-24 06:05:42
回答 3查看 15K关注 0票数 5

我必须传递一个带有时区信息的消息(jms),比如(America/Los_Angeles),但我只有国家名称和代码。如果可能的话,用Java代码获取时区信息。我在某个地方读到了这篇文章:

代码语言:javascript
运行
复制
System.out.println(TimeZone.getTimeZone("US"));

但是它给出的输出是

代码语言:javascript
运行
复制
sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]

我期待着“美国/洛杉矶”的列表,...

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-05-24 10:22:15

根据文档,getTimeZone方法返回指定的TimeZone,如果无法识别给定的ID,则返回GMT区域。没有名为US的TimeZone ID,因此它给出了格林威治时间区域。如果你真的想得到所有在美国可用的TimeZones列表,我建议你使用下面的列表。

代码语言:javascript
运行
复制
final List<String> timeZonesInUS = Stream.of(TimeZone.getAvailableIDs())
        .filter(zoneId -> zoneId.startsWith("US")).collect(Collectors.toList());
票数 4
EN

Stack Overflow用户

发布于 2019-05-30 01:03:59

内置的Java类不提供这一点,但是ICU's TimeZone class提供了,并且TimeZone.getAvailableIDs("US")提供了正确的答案。

票数 6
EN

Stack Overflow用户

发布于 2018-05-24 07:31:16

如果我没理解错的话,看起来你只是想要一个给定国家的时区列表。该站点列出了所有拥有自己代码的国家/地区:

https://garygregory.wordpress.com/2013/06/18/what-are-the-java-timezone-ids/

查看用于TimeZones的应用程序接口,您会发现无法直接通过TimeZone.getTimeZone()获取时区列表。因此,您可能希望遍历它们,只查看哪些以国家名称开头,并将它们添加到列表中,如下所示:

代码语言:javascript
运行
复制
public static List<String> GetZones(String country) {
    List<String> zones = new ArrayList<>();

    for (String i : TimeZone.getAvailableIDs()) {
        if (i.startsWith(country)) {
            zones.add(i);
        }
    }
    return zones;

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50498146

复制
相关文章

相似问题

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