Packages
timex
3.7.1
3.7.13
3.7.12
3.7.11
3.7.9
3.7.8
3.7.7
3.7.6
3.7.5
3.7.3
3.7.2
3.7.1
3.7.0
3.6.4
3.6.3
3.6.2
retired
3.6.1
3.6.0
3.5.0
3.4.2
3.4.1
3.3.0
3.2.2
3.2.1
3.2.0
3.1.25
retired
3.1.24
3.1.23
3.1.22
3.1.21
3.1.20
3.1.19
3.1.18
3.1.17
3.1.16
3.1.15
3.1.13
3.1.12
3.1.11
3.1.10
3.1.9
3.1.8
3.1.7
3.1.6
3.1.5
3.1.4
3.1.3
3.1.2
3.1.1
3.1.0
3.0.8
3.0.7
3.0.6
3.0.5
3.0.4
3.0.3
3.0.2
3.0.1
3.0.0
2.2.1
2.1.6
2.1.5
2.1.4
2.1.3
2.1.2
2.1.1
2.1.0
2.0.0
1.0.2
1.0.1
1.0.0
1.0.0-rc4
1.0.0-rc3
1.0.0-rc2
1.0.0-rc1
1.0.0-pre
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.2
0.18.1
0.18.0
0.17.0
0.16.2
0.16.1
0.16.0
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.13.5
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.12.9
0.12.8
0.12.7
0.12.6
0.12.5
0.12.4
0.12.3
0.12.2
0.12.1
0.12.0
0.11.0
0.10.2
0.10.1
0.10.0
0.9.0
0.8.0
0.7.1
0.6.0
0.5.0
0.4.8
0.4.7
0.4.6
Timex is a rich, comprehensive Date/Time library for Elixir projects, with full timezone support via the :tzdata package. If you need to manipulate dates, times, datetimes, timestamps, etc., then Timex is for you!
Current section
Files
Jump to
Current section
Files
lib/timezone/inspect.ex
defimpl Inspect, for: Timex.TimezoneInfo do
def inspect(date, %{:structs => false} = opts) do
Inspect.Algebra.to_doc(date, opts)
end
def inspect(tzinfo, _) do
total_offset = Timex.Timezone.total_offset(tzinfo)
offset = format_offset(total_offset)
"#<TimezoneInfo(#{tzinfo.full_name} - #{tzinfo.abbreviation} (#{offset}))>"
end
defp format_offset(total_offset) do
offset_hours = div(total_offset, 60 * 60)
offset_mins = div(rem(total_offset, 60 * 60), 60)
offset_secs = rem(rem(total_offset, 60 * 60), 60)
hour = "#{pad_numeric(offset_hours)}"
min = "#{pad_numeric(offset_mins)}"
secs = "#{pad_numeric(offset_secs)}"
cond do
offset_hours + offset_mins >= 0 -> "+#{hour}:#{min}:#{secs}"
true -> "#{hour}:#{min}:#{secs}"
end
end
defp pad_numeric(number) when is_integer(number), do: pad_numeric("#{number}")
defp pad_numeric(<<?-, number_str::binary>>) do
res = pad_numeric(number_str)
<<?-, res::binary>>
end
defp pad_numeric(number_str) do
min_width = 2
len = String.length(number_str)
cond do
len < min_width -> String.duplicate("0", min_width - len) <> number_str
true -> number_str
end
end
end
defimpl Inspect, for: Timex.AmbiguousTimezoneInfo do
alias Timex.AmbiguousTimezoneInfo
def inspect(date, %{:structs => false} = opts) do
Inspect.Algebra.to_doc(date, opts)
end
def inspect(%AmbiguousTimezoneInfo{:before => before, :after => aft}, _opts) do
"#<Ambiguous(#{inspect(before)} ~ #{inspect(aft)})>"
end
end