Packages
tz_extra
0.1.0
0.45.0
0.44.0
0.43.0
0.42.0
0.41.0
0.40.0
0.39.0
0.38.0
0.37.0
0.36.0
0.35.0
0.34.0
0.33.0
0.32.0
0.31.0
0.30.0
0.29.0
0.28.0
0.27.0
0.26.0
0.25.0
0.24.0
0.23.0
0.22.1
0.22.0
0.21.1
0.21.0
0.20.1
0.20.0
0.17.0
0.16.7
0.16.6
0.16.5
0.16.3
0.16.2
0.16.1
0.16.0
0.15.1
0.15.0
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
Time zone-related utilities
Current section
Files
Jump to
Current section
Files
lib/tz_extra.ex
defmodule TzExtra do
require TzExtra.FileParser.CountryParser
require TzExtra.FileParser.ZoneParser
import TzExtra.Helper
alias TzExtra.FileParser.CountryParser
alias TzExtra.FileParser.ZoneParser
tz_data_dir = Path.join(:code.priv_dir(:tz), Tz.version())
countries = CountryParser.parse(Path.join(tz_data_dir, "iso3166.tab"))
time_zones = ZoneParser.parse(Path.join(tz_data_dir, "zone1970.tab"), countries)
time_zones =
Enum.map(time_zones, fn time_zone ->
{:ok, periods} = Tz.periods(time_zone.name)
utc_offset = find_latest_utc_offset_for_periods(periods)
dst_offset = utc_offset + find_latest_std_offset_for_periods(periods)
time_zone
|> Map.put(:utc_offset, utc_offset)
|> Map.put(:dst_offset, dst_offset)
|> Map.put(:pretty_utc_offset, offset_to_string(utc_offset))
|> Map.put(:pretty_dst_offset, offset_to_string(dst_offset))
end)
def countries() do
unquote(Macro.escape(countries))
end
def time_zones() do
unquote(Macro.escape(time_zones))
end
end