验证Java中的时区并抛出异常

问题描述 投票:1回答:2

joda.time中是否有任何函数验证字符串是否表示正确的时区,如果格式不正确则抛出异常?

我知道TimeZone.getAvalibaleIDs(),但只是想知道是否有任何预定义的功能。

java timezone jodatime
2个回答
6
投票

如果身份证不被识别,DateTimeZone.forID()将抛出异常。

如果你想要获得实际区域,这是合适的 - 如果你只是想验证ID是否有效,我会使用getAvailableIDs()

boolean valid = DateTimeZone.getAvailableIDs().contains(id);

在避免使用流量控制异常(IMO)方面,这更好。但是,它们并不等效 - 固定偏移时区ID在DateTimeZone.forID()中有效,但可能不包含在可用ID集中。


0
投票

你可以编写一个像下面这样的函数,而不是使用Joda:

private boolean isTimeZoneValid(String givenTimeZone) {
    Set timeZoneSet = new HashSet(Arrays.asList(TimeZone.getAvailableIDs()));
    return timeZoneSet.contains(givenTimeZone); 
}
© www.soinside.com 2019 - 2024. All rights reserved.