本文介绍了Java 8 时区 ZoneRulesException:未知时区 ID:EST的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
"EST" 是 TimeZone.getAvailableIDs() 中的时区 ID 之一;
"EST" is one of the timeZone id from TimeZone.getAvailableIDs();
但是
TimeZone.getAvailableIDs(); // contains EST
ZoneId.of("EST")
java.time.zone.ZoneRulesException:未知时区 ID:EST
java.time.zone.ZoneRulesException: Unknown time-zone ID: EST
推荐答案
您正在混合使用新旧 API.
You are mixing old and new API's.
TimeZone.getAvailableIDs()
返回 TimeZone.getTimeZone(String ID)
可以解析.
ZoneId.getAvailableZoneIds()
返回 ZoneId.of(String zoneId)
可以解析.
如果你比较 2 的结果,你会看到:
If you compare the results of the 2, you will see:
public static void main(String[] args) {
Set<String> timeZones = Set.of(TimeZone.getAvailableIDs());
Set<String> zoneIds = ZoneId.getAvailableZoneIds();
System.out.println("Extra TimeZone's: " + diff(timeZones, zoneIds));
System.out.println("Extra ZoneId's: " + diff(zoneIds, timeZones));
}
static Set<String> diff(Set<String> a, Set<String> b) {
Set<String> diff = new TreeSet<>(a);
diff.removeAll(b);
return diff;
}
输出 (jdk-11.0.1)
Extra TimeZone's: [ACT, AET, AGT, ART, AST, BET, BST, CAT, CNT, CST, CTT, EAT, ECT, EST, HST, IET, IST, JST, MIT, MST, NET, NST, PLT, PNT, PRT, PST, SST, VST]
Extra ZoneId's: []
如您所见,ZoneId.getAvailableZoneIds()
并未声称支持 EST
,只有 TimeZone.getAvailableIDs()
支持.
As you can see, ZoneId.getAvailableZoneIds()
does not claim to support EST
, only TimeZone.getAvailableIDs()
does.
这篇关于Java 8 时区 ZoneRulesException:未知时区 ID:EST的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!