private boolean isValidTimeZone(final String timeZone) { final String DEFAULT_GMT_TIMEZONE = "GMT"; if (timeZone.equals(DEFAULT_GMT_TIMEZONE)) { return true; } else { // if custom time zone is invalid, // time zone id returned is always "GMT" by default String id = TimeZone.getTimeZone(timeZone).getID(); if (!id.equals(DEFAULT_GMT_TIMEZONE)) { return true; } } return false; }
The method returns true for the following:
assertTrue(this.isValidTimeZone("JST")); assertTrue(this.isValidTimeZone("UTC")); assertTrue(this.isValidTimeZone("GMT")); // GMT+00:00 assertTrue(this.isValidTimeZone("GMT+0")); // GMT-00:00 assertTrue(this.isValidTimeZone("GMT-0")); // GMT+09:00 assertTrue(this.isValidTimeZone("GMT+9:00")); // GMT+10:30 assertTrue(this.isValidTimeZone("GMT+10:30")); // GMT-04:00 assertTrue(this.isValidTimeZone("GMT-0400")); // GMT+08:00 assertTrue(this.isValidTimeZone("GMT+8")); // GMT-13:00 assertTrue(this.isValidTimeZone("GMT-13")); // GMT-13:59 assertTrue(this.isValidTimeZone("GMT+13:59")); // NOTE: valid time zone IDs (see TimeZone.getAvailableIDs()) // GMT-08:00 assertTrue(this.isValidTimeZone("America/Los_Angeles")); // GMT+09:00 assertTrue(this.isValidTimeZone("Japan")); // GMT+01:00 assertTrue(this.isValidTimeZone("Europe/Berlin")); // GMT+04:00 assertTrue(this.isValidTimeZone("Europe/Moscow")); // GMT+08:00 assertTrue(this.isValidTimeZone("Asia/Singapore"));
... and false with the following time zones:
assertFalse(this.isValidTimeZone("JPY")); assertFalse(this.isValidTimeZone("USD")); assertFalse(this.isValidTimeZone("UTC+8")); assertFalse(this.isValidTimeZone("UTC+09:00")); assertFalse(this.isValidTimeZone("+09:00")); assertFalse(this.isValidTimeZone("-08:00")); assertFalse(this.isValidTimeZone("-1")); assertFalse(this.isValidTimeZone("GMT+10:-30")); // hours is 0-23 only assertFalse(this.isValidTimeZone("GMT+24:00")); // minutes 00-59 only assertFalse(this.isValidTimeZone("GMT+13:60"));
jejare
source share