README.md

# TzExtra

`tz_extra` provides a few utilities to work with time zones.

### `TzExtra.time_zones/0`

Returns a list of time zones with useful data such as
* the coordinates of the location
* the country where the time zone is observed
* the UTC and DST offsets

#### Example

```
iex> TzExtra.time_zones() |> Enum.at(200)
```

```
%{
  coordinates: "+513030-0000731",
  country: %{code: "JE", name: "Jersey"},
  dst_offset: 3600,
  name: "Europe/London",
  pretty_dst_offset: "+01:00",
  pretty_utc_offset: "+00:00",
  utc_offset: 0
}
```

If a time zone is observed in multiple countries, the time zone data will be repeated for each country. For example,
Crimea has been a subject of a territorial dispute between Ukraine and Russia:

```
iex> TzExtra.time_zones() |> Enum.filter(& &1.name == "Europe/Simferopol")
```

```
[
  %{
    coordinates: "+4457+03406",
    country: %{code: "RU", name: "Russia"},
    dst_offset: 10800,
    name: "Europe/Simferopol",
    pretty_dst_offset: "+03:00",
    pretty_utc_offset: "+03:00",
    utc_offset: 10800
  },
  %{
    coordinates: "+4457+03406",
    country: %{code: "UA", name: "Ukraine"},
    dst_offset: 10800,
    name: "Europe/Simferopol",
    pretty_dst_offset: "+03:00",
    pretty_utc_offset: "+03:00",
    utc_offset: 10800
  }
]
```

### `TzExtra.countries/0`

```
iex> TzExtra.countries() |> Enum.take(5)
```

```
[
  %{code: "AF", name: "Afghanistan"},
  %{code: "AL", name: "Albania"},
  %{code: "DZ", name: "Algeria"},
  %{code: "AD", name: "Andorra"},
  %{code: "AO", name: "Angola"}
]
```

## Installation

Add `tz_extra` for Elixir as a dependency in your `mix.exs` file:

```elixir
def deps do
  [
    {:tz_extra, "~> 0.1.0"}
  ]
end
```

## HexDocs

HexDocs documentation can be found at [https://hexdocs.pm/tz_extra](https://hexdocs.pm/tz_extra).