我必须传递带有时区信息的消息(jms),如(America / Los_Angeles),但我只有国家名称和代码。如果有可能获得Java代码的时区信息。在某处我读到了这个:
math.randomseed(os.time())
但它的输出为
System.out.println(TimeZone.getTimeZone("US"));
我期待着#34; America / Los_Angeles",...
的列表答案 0 :(得分:1)
如果我理解正确,看起来您只需要一个来自特定国家/地区的时区列表。该网站列出了拥有自己代码的所有国家/地区:
https://garygregory.wordpress.com/2013/06/18/what-are-the-java-timezone-ids/
查看TimeZones的API显示,无法直接通过TimeZone.getTimeZone()
获取时区列表。所以相反,你可能想要遍历它们,看看哪些以国家名称开头并将它们添加到列表中,如下所示:
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;
}
答案 1 :(得分:1)
根据文档,getTimeZone
方法返回指定的TimeZone
或GMT
区域,如果无法理解给定的ID。没有名为 US 的TimeZone ID,因此它给出了GMT区域。如果您真的希望获得美国所有TimeZones列表,我建议您使用以下内容。
final List<String> timeZonesInUS = Stream.of(TimeZone.getAvailableIDs())
.filter(zoneId -> zoneId.startsWith("US")).collect(Collectors.toList());
答案 2 :(得分:0)
内置的Java类不提供此功能,但是ICU's TimeZone class提供了此功能,而TimeZone.getAvailableIDs("US")
提供了正确的答案。