use*_*643 10 java validation timezone
我有一个字符串,我需要检查它是否是标准的时区标识符.我不确定我需要使用哪种方法.
String timeZoneToCheck = "UTC";
Run Code Online (Sandbox Code Playgroud)
我想检查它是否代表有效的时区.
Mac*_*cki 18
你可以把它写成一行
public boolean validTimeZone(String timezone) {
return Arrays.asList(TimeZone.getAvailableIDs()).contains(timezone);
}
Run Code Online (Sandbox Code Playgroud)
kos*_*osa 12
您可以使用getAvailableIDs()获取所有支持的ID
然后循环supportedID数组并与String进行比较.
例:
String[] validIDs = TimeZone.getAvailableIDs();
for (String str : validIDs) {
if (str != null && str.equals("yourString")) {
System.out.println("Valid ID");
}
}
Run Code Online (Sandbox Code Playgroud)
这很简单,只需使用 ZoneId.of("Asia/Kolkata")
try {
ZoneId.of("Asia/Kolkataa");
} catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
如果您插入无效时区,它将抛出异常
**java.time.zone.ZoneRulesException: Unknown time-zone ID: Asia/Kolkataa**
Run Code Online (Sandbox Code Playgroud)
这是一种比遍历所有可能的 ID 更有效的解决方案。它检查 的输出getTimeZone。
Java 文档 (TimeZone#getTimeZone):
返回: 指定的时区,如果无法理解给定的 ID,则返回GMT 时区。
因此,如果输出是 GMT 时区,则输入无效,除非输入实际是“GMT”。
public static boolean isValidTimeZone(@NonNull String timeZoneID) {
return (timeZoneID.equals("GMT") || !TimeZone.getTimeZone(timeZoneID).getID().equals("GMT"));
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您想使用有效时区而不调用getTimeZone两次:
TimeZone timeZone = TimeZone.getTimeZone(timeZoneToCheck);
if(timeZoneToCheck.equals("GMT") || !timeZone.getID().equals("GMT")) {
// TODO Valid - use timeZone
} else {
// TODO Invalid - handle the invalid input
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11756 次 |
| 最近记录: |