diff options
author | Aaron Renner <aaron.renner@gmail.com> | 2019-02-15 11:57:04 -0700 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2019-02-15 19:57:04 +0100 |
commit | a190c586804f74edaf527f9c32de56e5b5c36f9c (patch) | |
tree | 1b91ae6817ef244cad3301aabfd39a6188a71e3b | |
parent | c1bc409cc7d92fe253e67d47d8df77a95a43a5d6 (diff) | |
download | elixir-a190c586804f74edaf527f9c32de56e5b5c36f9c.tar.gz |
Allow integer time units for DateTime.from_unix!/2 (#8801)
-rw-r--r-- | lib/elixir/lib/calendar/datetime.ex | 4 | ||||
-rw-r--r-- | lib/elixir/test/elixir/calendar/datetime_test.exs | 16 |
2 files changed, 19 insertions, 1 deletions
diff --git a/lib/elixir/lib/calendar/datetime.ex b/lib/elixir/lib/calendar/datetime.ex index 1744fd11f..34a5b7a08 100644 --- a/lib/elixir/lib/calendar/datetime.ex +++ b/lib/elixir/lib/calendar/datetime.ex @@ -160,9 +160,11 @@ defmodule DateTime do iex> DateTime.from_unix!(1_432_560_368_868_569, :microsecond) #DateTime<2015-05-25 13:26:08.868569Z> + iex> DateTime.from_unix!(143_256_036_886_856, 1024) + #DateTime<6403-03-17 07:05:22.320Z> """ @spec from_unix!(integer, :native | System.time_unit(), Calendar.calendar()) :: t - def from_unix!(integer, unit \\ :second, calendar \\ Calendar.ISO) when is_atom(unit) do + def from_unix!(integer, unit \\ :second, calendar \\ Calendar.ISO) do case from_unix(integer, unit, calendar) do {:ok, datetime} -> datetime diff --git a/lib/elixir/test/elixir/calendar/datetime_test.exs b/lib/elixir/test/elixir/calendar/datetime_test.exs index e023f4bf5..4c0d0e411 100644 --- a/lib/elixir/test/elixir/calendar/datetime_test.exs +++ b/lib/elixir/test/elixir/calendar/datetime_test.exs @@ -216,6 +216,14 @@ defmodule DateTimeTest do } assert DateTime.from_unix(-1, :microsecond) == {:ok, minus_datetime} + + assert_raise ArgumentError, fn -> + DateTime.from_unix(0, :unknown_atom) + end + + assert_raise ArgumentError, fn -> + DateTime.from_unix(0, "invalid type") + end end test "from_unix!/2" do @@ -240,6 +248,14 @@ defmodule DateTimeTest do assert_raise ArgumentError, fn -> DateTime.from_unix!(-377_705_116_801) end + + assert_raise ArgumentError, fn -> + DateTime.from_unix!(0, :unknown_atom) + end + + assert_raise ArgumentError, fn -> + DateTime.from_unix!(0, "invalid type") + end end test "to_unix/2 works with Unix times back to 0 Gregorian seconds" do |