# `Cldr.Timezone`
[🔗](https://github.com/elixir-cldr/cldr/blob/v2.47.3/lib/cldr/timezone.ex#L1)

Functions to map between the CLDR short time zone code and the
IANA timezone names.

The Unicode [locale](https://unicode.org/reports/tr35/#Locale)
[extension U](https://unicode.org/reports/tr35/#u_Extension)
allows the specification of the time zone requested for the provided locale.

This short timezone codes never change even if the IANA names change
over time. Therefore these short codes are always stable between CLDR
releases.

# `short_zone`

```elixir
@type short_zone() :: String.t()
```

# `timezone`

```elixir
@type timezone() :: %{
  aliases: [String.t(), ...],
  preferred: nil | short_zone(),
  territory: Cldr.Locale.territory_code()
}
```

# `fetch_short_zone`

```elixir
@spec fetch_short_zone(String.t()) :: {:ok, map()} | :error
```

Returns a `{:ok, list}` where list is a
list of IANA timezone names for
a given CLDR short zone code. If no such
short code exists then `:error` is returned.

### Example

    iex> Cldr.Timezone.fetch_short_zone("ausyd")
    {
      :ok,
      %{
        preferred: nil,
        aliases: ["Australia/Sydney", "Australia/ACT", "Australia/Canberra", "Australia/NSW"],
        territory: :AU
      }
    }

    iex> Cldr.Timezone.fetch_short_zone("nope")
    :error

# `get_short_zone`

```elixir
@spec get_short_zone(String.t(), String.t() | nil) :: map() | nil
```

Returns a list of IANA time zone names for
a given CLDR short zone code, or `nil`.

The first time zone name in the list is
the canonical time zone name.

### Examples

    iex> Cldr.Timezone.get_short_zone("ausyd")
    %{
      preferred: nil,
      aliases: ["Australia/Sydney", "Australia/ACT", "Australia/Canberra", "Australia/NSW"],
      territory: :AU
    }

    iex> Cldr.Timezone.get_short_zone("nope")
    nil

# `territories_by_timezone`

Returns a mapping of time zone IDs to
their known territory.

A time zone can only belong to one
territory in CLDR.

# `timezones`

```elixir
@spec timezones() :: %{required(zone_name :: String.t()) =&gt; timezone()}
```

Returns a mapping of CLDR short zone codes to
IANA timezone names.

# `timezones_by_territory`

```elixir
@spec timezones_by_territory() :: %{
  BW: [timezone(), ...],
  HR: [timezone(), ...],
  BA: [timezone(), ...],
  BY: [timezone(), ...],
  AR: [timezone(), ...],
  AS: [timezone(), ...],
  NO: [timezone(), ...],
  CX: [timezone(), ...],
  PW: [timezone(), ...],
  SR: [timezone(), ...],
  MA: [timezone(), ...],
  DE: [timezone(), ...],
  GR: [timezone(), ...],
  AD: [timezone(), ...],
  SY: [timezone(), ...],
  SA: [timezone(), ...],
  KI: [timezone(), ...],
  LK: [timezone(), ...],
  ML: [timezone(), ...],
  BS: [timezone(), ...],
  CG: [timezone(), ...],
  NI: [timezone(), ...],
  AX: [timezone(), ...],
  GU: [timezone(), ...],
  MK: [timezone(), ...],
  IS: [timezone(), ...],
  GH: [timezone(), ...],
  KZ: [timezone(), ...],
  SX: [timezone(), ...],
  CN: [timezone(), ...],
  AW: [timezone(), ...],
  IL: [timezone(), ...],
  NU: [timezone(), ...],
  UG: [timezone(), ...],
  GA: [timezone(), ...],
  AL: [timezone(), ...],
  EE: [timezone(), ...],
  AO: [timezone(), ...],
  MP: [timezone(), ...],
  PE: [timezone(), ...],
  TW: [timezone(), ...],
  AZ: [timezone(), ...],
  WF: [timezone(), ...],
  GI: [timezone(), ...],
  JE: [timezone(), ...],
  VI: [timezone(), ...],
  TG: [timezone(), ...],
  GW: [timezone(), ...],
  PT: [timezone(), ...],
  TO: [timezone(), ...],
  KN: [timezone(), ...],
  GE: [timezone(), ...],
  BQ: [timezone(), ...],
  CD: [timezone(), ...],
  CO: [timezone(), ...],
  FJ: [timezone(), ...],
  BH: [timezone(), ...],
  MR: [timezone(), ...],
  SN: [timezone(), ...],
  PY: [timezone(), ...],
  LI: [timezone(), ...],
  AG: [timezone(), ...],
  IT: [timezone(), ...],
  LT: [timezone(), ...],
  CM: [timezone(), ...],
  GL: [timezone(), ...],
  AM: [timezone(), ...],
  QA: [timezone(), ...],
  WS: [timezone(), ...],
  HK: [timezone(), ...],
  DJ: [timezone(), ...],
  PN: [timezone(), ...],
  IE: [timezone(), ...],
  NC: [timezone(), ...],
  CK: [timezone(), ...],
  PR: [timezone(), ...],
  SE: [timezone(), ...],
  GY: [timezone(), ...],
  TN: [timezone(), ...],
  TC: [timezone(), ...],
  KW: [timezone(), ...],
  BT: [timezone(), ...],
  AQ: [timezone(), ...],
  KG: [timezone(), ...],
  TF: [timezone(), ...],
  VE: [timezone(), ...],
  AE: [timezone(), ...],
  RO: [timezone(), ...],
  LB: [timezone(), ...],
  GM: [timezone(), ...],
  CC: [timezone(), ...],
  SZ: [timezone(), ...],
  MF: [timezone(), ...],
  HU: [timezone(), ...],
  KY: [timezone(), ...],
  UA: [timezone(), ...],
  BF: [timezone(), ...],
  TL: [timezone(), ...],
  BN: [timezone(), ...],
  LC: [timezone(), ...],
  MV: [timezone(), ...],
  ZA: [timezone(), ...],
  AI: [timezone(), ...],
  SG: [timezone(), ...],
  EC: [timezone(), ...],
  MM: [timezone(), ...],
  UY: [timezone(), ...],
  VN: [timezone(), ...],
  MW: [timezone(), ...],
  SD: [timezone(), ...],
  YT: [timezone(), ...],
  CF: [timezone(), ...],
  MT: [timezone(), ...],
  MZ: [timezone(), ...],
  PK: [timezone(), ...],
  FI: [timezone(), ...],
  SJ: [timezone(), ...],
  CU: [timezone(), ...],
  GP: [timezone(), ...],
  HN: [timezone(), ...],
  LR: [timezone(), ...],
  SO: [timezone(), ...],
  JM: [timezone(), ...],
  SC: [timezone(), ...],
  TM: [timezone(), ...],
  RS: [timezone(), ...],
  MX: [timezone(), ...],
  VU: [timezone(), ...],
  RE: [timezone(), ...],
  GG: [timezone(), ...],
  CA: [timezone(), ...],
  NF: [timezone(), ...],
  GB: [timezone(), ...],
  ZM: [timezone(), ...],
  PS: [timezone(), ...],
  TV: [timezone(), ...],
  MC: [timezone(), ...],
  PH: [timezone(), ...],
  LA: [timezone(), ...],
  KR: [timezone(), ...],
  GQ: [timezone(), ...],
  ST: [timezone(), ...],
  NE: [timezone(), ...],
  MD: [timezone(), ...],
  CI: [timezone(), ...],
  TZ: [timezone(), ...],
  FR: [timezone(), ...],
  CR: [timezone(), ...],
  LV: [timezone(), ...],
  MH: [timezone(), ...],
  RU: [timezone(), ...],
  CH: [timezone(), ...],
  US: [timezone(), ...],
  ZW: [timezone(), ...],
  FK: [timezone(), ...],
  GS: [timezone(), ...],
  PF: [timezone(), ...],
  AU: [timezone(), ...],
  BE: [timezone(), ...],
  PG: [timezone(), ...],
  CL: [timezone(), ...],
  NA: [timezone(), ...],
  OM: [timezone(), ...],
  GD: [timezone(), ...],
  KH: [timezone(), ...],
  RW: [timezone(), ...],
  SS: [timezone(), ...],
  FM: [timezone(), ...],
  GN: [timezone(), ...],
  NL: [timezone(), ...],
  PL: [timezone(), ...],
  IN: [timezone(), ...],
  PM: [timezone(), ...],
  ME: [timezone(), ...],
  BZ: [timezone(), ...],
  MS: [timezone(), ...],
  LS: [timezone(), ...],
  BL: [timezone(), ...],
  KE: [timezone(), ...],
  KP: [timezone(), ...],
  VG: [timezone(), ...],
  MO: [timezone(), ...],
  IM: [timezone(), ...],
  YE: [timezone(), ...],
  SK: [timezone(), ...],
  SB: [timezone(), ...],
  BB: [timezone(), ...],
  FO: [timezone(), ...],
  IQ: [timezone(), ...],
  BR: [timezone(), ...],
  GF: [timezone(), ...],
  VC: [timezone(), ...],
  DK: [timezone(), ...],
  GT: [timezone(), ...],
  MG: [timezone(), ...],
  BO: [timezone(), ...],
  TR: [timezone(), ...],
  MQ: [timezone(), ...],
  HT: [timezone(), ...],
  CY: [timezone(), ...],
  LU: [timezone(), ...],
  CV: [timezone(), ...],
  MN: [timezone(), ...],
  CW: [timezone(), ...],
  SL: [timezone(), ...],
  BG: [timezone(), ...],
  ES: [timezone(), ...],
  TD: [timezone(), ...],
  TH: [timezone(), ...],
  AT: [timezone(), ...],
  ET: [timezone(), ...],
  NG: [timezone(), ...],
  NZ: [timezone(), ...],
  DM: [timezone(), ...],
  ID: [timezone(), ...],
  TT: [timezone(), ...],
  KM: [timezone(), ...],
  IO: [timezone(), ...],
  CZ: [timezone(), ...],
  LY: [timezone(), ...],
  DO: [timezone(), ...],
  BM: [timezone(), ...],
  NR: [timezone(), ...],
  SM: [timezone(), ...],
  BJ: [timezone(), ...],
  JO: [timezone(), ...],
  SI: [timezone(), ...],
  UZ: [timezone(), ...],
  AF: [timezone(), ...],
  MY: [timezone(), ...],
  IR: [timezone(), ...],
  VA: [timezone(), ...],
  DZ: [timezone(), ...],
  ER: [timezone(), ...],
  SH: [timezone(), ...],
  UM: [timezone(), ...],
  JP: [timezone(), ...],
  TJ: [timezone(), ...],
  MU: [timezone(), ...],
  NP: [timezone(), ...],
  BD: [timezone(), ...],
  TK: [timezone(), ...],
  BI: [timezone(), ...],
  PA: [timezone(), ...],
  SV: [timezone(), ...],
  EH: [timezone(), ...],
  EG: [timezone(), ...]
}
```

Returns a mapping of territories to
their known IANA timezone names.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
