joda.time中是否有任何函数验证字符串是否表示正确的时区,如果格式不正确则抛出异常?
我知道TimeZone.getAvalibaleIDs(),但只是想知道是否有任何预定义的功能。
如果身份证不被识别,DateTimeZone.forID()
将抛出异常。
如果你想要获得实际区域,这是合适的 - 如果你只是想验证ID是否有效,我会使用getAvailableIDs()
:
boolean valid = DateTimeZone.getAvailableIDs().contains(id);
在避免使用流量控制异常(IMO)方面,这更好。但是,它们并不等效 - 固定偏移时区ID在DateTimeZone.forID()
中有效,但可能不包含在可用ID集中。
你可以编写一个像下面这样的函数,而不是使用Joda:
private boolean isTimeZoneValid(String givenTimeZone) {
Set timeZoneSet = new HashSet(Arrays.asList(TimeZone.getAvailableIDs()));
return timeZoneSet.contains(givenTimeZone);
}