Class ZoneMeta

java.lang.Object
com.ibm.icu.impl.ZoneMeta

public final class ZoneMeta extends Object
This class, not to be instantiated, implements the meta-data missing from the underlying core JDK implementation of time zones. There are two missing features: Obtaining a list of available zones for a given country (as defined by the Olson database), and obtaining a list of equivalent zones for a given zone (as defined by Olson links). This class uses a data class, ZoneMetaData, which is created by the tool tz2icu.
Since:
ICU 2.8
  • Field Details

  • Constructor Details

    • ZoneMeta

      public ZoneMeta()
  • Method Details

    • getSystemZIDs

      private static Set<String> getSystemZIDs()
      Returns an immutable set of system time zone IDs. Etc/Unknown is excluded.
      Returns:
      An immutable set of system time zone IDs.
    • getCanonicalSystemZIDs

      private static Set<String> getCanonicalSystemZIDs()
      Returns an immutable set of canonical system time zone IDs. The result set is a subset of getSystemZIDs(), but not including aliases, such as "US/Eastern".
      Returns:
      An immutable set of canonical system time zone IDs.
    • getCanonicalSystemLocationZIDs

      private static Set<String> getCanonicalSystemLocationZIDs()
      Returns an immutable set of canonical system time zone IDs that are associated with actual locations. The result set is a subset of getCanonicalSystemZIDs(), but not including IDs, such as "Etc/GTM+5".
      Returns:
      An immutable set of canonical system time zone IDs that are associated with actual locations.
    • getAvailableIDs

      public static Set<String> getAvailableIDs(TimeZone.SystemTimeZoneType type, String region, Integer rawOffset)
      Returns an immutable set of system IDs for the given conditions.
      Parameters:
      type - a system time zone type.
      region - a region, or null.
      rawOffset - a zone raw offset or null.
      Returns:
      An immutable set of system IDs for the given conditions.
    • countEquivalentIDs

      public static int countEquivalentIDs(String id)
      Returns the number of IDs in the equivalency group that includes the given ID. An equivalency group contains zones that behave identically to the given zone.

      If there are no equivalent zones, then this method returns 0. This means either the given ID is not a valid zone, or it is and there are no other equivalent zones.

      Parameters:
      id - a system time zone ID
      Returns:
      the number of zones in the equivalency group containing 'id', or zero if there are no equivalent zones.
      See Also:
    • getEquivalentID

      public static String getEquivalentID(String id, int index)
      Returns an ID in the equivalency group that includes the given ID. An equivalency group contains zones that behave identically to the given zone.

      The given index must be in the range 0..n-1, where n is the value returned by countEquivalentIDs(id). For some value of 'index', the returned value will be equal to the given id. If the given id is not a valid system time zone, or if 'index' is out of range, then returns an empty string.

      Parameters:
      id - a system time zone ID
      index - a value from 0 to n-1, where n is the value returned by countEquivalentIDs(id)
      Returns:
      the ID of the index-th zone in the equivalency group containing 'id', or an empty string if 'id' is not a valid system ID or 'index' is out of range
      See Also:
    • getZoneIDs

      private static String[] getZoneIDs()
    • getZoneID

      private static String getZoneID(int idx)
    • getZoneIndex

      private static int getZoneIndex(String zid)
    • getCanonicalCLDRID

      public static String getCanonicalCLDRID(TimeZone tz)
    • getCanonicalCLDRID

      public static String getCanonicalCLDRID(String tzid)
      Return the canonical id for this tzid defined by CLDR, which might be the id itself. If the given tzid is not known, return null. Note: This internal API supports all known system IDs and "Etc/Unknown" (which is NOT a system ID).
    • findCLDRCanonicalID

      private static String findCLDRCanonicalID(String tzid)
    • getIanaID

      public static String getIanaID(String tzid)
      Returns primary IANA zone ID for the input zone ID. When input zone ID is not known, this method returns null.
      Parameters:
      tzid - An input zone ID.
      Returns:
      A primary IANA zone ID equivalent to the input zone ID.
    • getRegion

      public static String getRegion(String tzid)
      Return the region code for this tzid. If tzid is not a system zone ID, this method returns null.
    • getCanonicalCountry

      public static String getCanonicalCountry(String tzid)
      Return the canonical country code for this tzid. If we have none, or if the time zone is not associated with a country or unknown, return null.
    • getCanonicalCountry

      public static String getCanonicalCountry(String tzid, Output<Boolean> isPrimary)
      Return the canonical country code for this tzid. If we have none, or if the time zone is not associated with a country or unknown, return null. When the given zone is the primary zone of the country, true is set to isPrimary.
    • openOlsonResource

      public static UResourceBundle openOlsonResource(UResourceBundle top, String id)
      Given an ID and the top-level resource of the zoneinfo resource, open the appropriate resource for the given time zone. Dereference links if necessary.
      Parameters:
      top - the top level resource of the zoneinfo resource or null.
      id - zone id
      Returns:
      the corresponding zone resource or null if not found
    • getSystemTimeZone

      public static OlsonTimeZone getSystemTimeZone(String id)
      Returns a frozen OlsonTimeZone instance for the given ID. This method returns null when the given ID is unknown.
    • getCustomTimeZone

      public static SimpleTimeZone getCustomTimeZone(String id)
      Parse a custom time zone identifier and return a corresponding zone.
      Parameters:
      id - a string of the form GMT[+-]hh:mm, GMT[+-]hhmm, or GMT[+-]hh.
      Returns:
      a frozen SimpleTimeZone with the given offset and no Daylight Savings Time, or null if the id cannot be parsed.
    • getCustomID

      public static String getCustomID(String id)
      Parse a custom time zone identifier and return the normalized custom time zone identifier for the given custom id string.
      Parameters:
      id - a string of the form GMT[+-]hh:mm, GMT[+-]hhmm, or GMT[+-]hh.
      Returns:
      The normalized custom id string.
    • parseCustomID

      static boolean parseCustomID(String id, int[] fields)
    • getCustomTimeZone

      public static SimpleTimeZone getCustomTimeZone(int offset)
      Creates a custom zone for the offset
      Parameters:
      offset - GMT offset in milliseconds
      Returns:
      A custom TimeZone for the offset with normalized time zone id
    • formatCustomID

      static String formatCustomID(int hour, int min, int sec, boolean negative)
    • getShortID

      public static String getShortID(TimeZone tz)
      Returns the time zone's short ID for the zone. For example, "uslax" for zone "America/Los_Angeles".
      Parameters:
      tz - the time zone
      Returns:
      the short ID of the time zone, or null if the short ID is not available.
    • getShortID

      public static String getShortID(String id)
      Returns the time zone's short ID for the zone ID. For example, "uslax" for zone ID "America/Los_Angeles".
      Parameters:
      id - the time zone ID
      Returns:
      the short ID of the time zone ID, or null if the short ID is not available.
    • getShortIDFromCanonical

      private static String getShortIDFromCanonical(String canonicalID)