TimeZone validation in Java

前端 未结 9 2218
梦如初夏
梦如初夏 2021-02-20 00:08

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\"         


        
相关标签:
9条回答
  • 2021-02-20 00:32

    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);
    }
    
    0 讨论(0)
  • 2021-02-20 00:33

    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);
    }
    
    0 讨论(0)
  • 2021-02-20 00:35

    You can use TimeZone.getAvailableIDs() to get list of supported Id

    for (String str : TimeZone.getAvailableIDs()) {
        if (str.equals("UTC")) {
            //found
        }
    }
    
    0 讨论(0)
提交回复
热议问题