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());
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)
。
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美洲/大特克美洲/瓜亚基尔美洲/哈瓦那...
添加回答
举报