I have a string, I need to check whether it is a standard time zone identifier or not. I am not sure which method I need to use.
String timeZoneToCheck = \"UTC\"
Since TimeZone#getTimeZone(String id)
returns a default if the value is invalid (rather than returning an invalid time zone), if the reinterpreted value does not match the initial value, it wasn't valid.
private static boolean isValidTimeZone(@Nonnull String potentialTimeZone)
{
// If the input matches the re-interpreted value, then the time zone is valid.
return TimeZone.getTimeZone(potentialTimeZone).getID().equals(potentialTimeZone);
}
You can write it in one line
public boolean validTimeZone(String timezone) {
return Set.of(TimeZone.getAvailableIDs()).contains(timezone);
}
Alternatively, you can make a static field for it
private static final Set<String> TIMEZONES = Set.of(TimeZone.getAvailableIDs())
public boolean validTimeZone(String timezone) {
return TIMEZONES.contains(timezone);
}
You can use TimeZone.getAvailableIDs()
to get list of supported Id
for (String str : TimeZone.getAvailableIDs()) {
if (str.equals("UTC")) {
//found
}
}