Packages
timex
2.0.0
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/convert/datetime.ex
defimpl Timex.Convertable, for: Timex.DateTime do
alias Timex.Date
alias Timex.DateTime
alias Timex.TimezoneInfo
def to_gregorian(%DateTime{
:year => y, :month => m, :day => d, :hour => h, :minute => min, :second => sec,
:timezone => %TimezoneInfo{:abbreviation => abbrev}} = datetime) do
# Use the correct abbreviation depending on whether we're in DST or not
offset = Timex.Timezone.diff(datetime, %TimezoneInfo{})
case rem(offset, 60) do
0 -> {{y, m, d}, {h, min, sec}, {div(offset, 60), abbrev}}
_ -> {{y, m, d}, {h, min, sec}, {offset / 60, abbrev}}
end
end
def to_gregorian_seconds(%DateTime{} = date), do: DateTime.to_seconds(date, :zero)
def to_erlang_datetime(%DateTime{:year => y, :month => m, :day => d, :hour => h, :minute => min, :second => sec}) do
{{y, m, d}, {h, min, sec}}
end
def to_date(%DateTime{} = datetime), do: Date.from(datetime)
def to_datetime(%DateTime{} = datetime), do: datetime
def to_unix(%DateTime{} = datetime), do: DateTime.to_seconds(datetime, :epoch)
def to_timestamp(%DateTime{} = datetime), do: DateTime.to_timestamp(datetime, :epoch)
end