2023-03-10 13:49:01 +01:00
|
|
|
defmodule ChiyaWeb.Format do
|
2023-03-13 03:27:17 +01:00
|
|
|
def from_now(%DateTime{} = later) do
|
2023-03-11 00:05:16 +01:00
|
|
|
now = DateTime.utc_now()
|
|
|
|
diff = DateTime.diff(now, later)
|
|
|
|
do_from_now(diff)
|
2023-03-10 15:11:24 +01:00
|
|
|
end
|
|
|
|
|
2023-03-13 03:27:17 +01:00
|
|
|
def from_now(%NaiveDateTime{} = later) do
|
2023-03-11 00:05:16 +01:00
|
|
|
now = NaiveDateTime.utc_now()
|
|
|
|
diff = NaiveDateTime.diff(now, later)
|
|
|
|
do_from_now(diff)
|
2023-03-10 15:11:24 +01:00
|
|
|
end
|
|
|
|
|
2023-03-15 07:17:00 +01:00
|
|
|
def from_now(_), do: "never"
|
|
|
|
|
2023-03-11 00:05:16 +01:00
|
|
|
def do_from_now(diff) do
|
2023-03-10 15:11:24 +01:00
|
|
|
cond do
|
2023-03-13 03:27:17 +01:00
|
|
|
diff <= -24 * 3600 -> "in #{div(-diff, 24 * 3600)} days"
|
|
|
|
diff <= -3600 -> "in #{div(-diff, 3600)} hours"
|
|
|
|
diff <= -60 -> "in #{div(-diff, 60)} minutes"
|
|
|
|
diff <= -5 -> "in #{-diff} seconds"
|
2023-03-10 15:11:24 +01:00
|
|
|
diff <= 5 -> "now"
|
2023-03-13 03:27:17 +01:00
|
|
|
diff <= 60 -> "#{diff} seconds ago"
|
|
|
|
diff <= 3600 -> "#{div(diff, 60)} minutes ago"
|
|
|
|
diff <= 24 * 3600 -> "#{div(diff, 3600)} hours ago"
|
|
|
|
true -> "#{div(diff, 24 * 3600)} days ago"
|
2023-03-10 15:11:24 +01:00
|
|
|
end
|
2023-03-10 13:49:01 +01:00
|
|
|
end
|
2023-03-13 03:27:17 +01:00
|
|
|
|
|
|
|
def pretty_date(%NaiveDateTime{} = date) do
|
|
|
|
Calendar.strftime(date, "%d.%m.%Y")
|
|
|
|
end
|
2023-03-14 23:56:11 +01:00
|
|
|
def pretty_date(_), do: ""
|
2023-03-11 00:05:16 +01:00
|
|
|
end
|