Remove Timex from `Plausible.Timezones` (#3899)

* use stdlib for timezones

* Remove unused `Timezones.to_utc_datetime/2`

---------

Co-authored-by: Adrian Gruntkowski <adrian.gruntkowski@gmail.com>
This commit is contained in:
ruslandoga 2024-09-05 16:48:07 +07:00 committed by GitHub
parent 3deca86201
commit 654558dbf9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 11 additions and 7 deletions

View File

@ -8,15 +8,19 @@ defmodule Plausible.Timezones do
@spec to_date_in_timezone(Date.t() | NaiveDateTime.t() | DateTime.t(), String.t()) :: Date.t()
def to_date_in_timezone(dt, timezone) do
to_datetime_in_timezone(dt, timezone) |> Timex.to_date()
to_datetime_in_timezone(dt, timezone) |> DateTime.to_date()
end
@spec to_datetime_in_timezone(Date.t() | NaiveDateTime.t() | DateTime.t(), String.t()) ::
DateTime.t()
def to_datetime_in_timezone(dt, timezone) do
dt |> Timex.to_datetime("UTC") |> Timex.Timezone.convert(timezone)
dt |> to_datetime() |> DateTime.shift_zone!(timezone)
end
defp to_datetime(%NaiveDateTime{} = naive), do: DateTime.from_naive!(naive, "Etc/UTC")
defp to_datetime(%Date{} = date), do: DateTime.new!(date, ~T[00:00:00], "Etc/UTC")
defp to_datetime(%DateTime{} = already_dt), do: already_dt
defp build_option(timezone_code, acc, now) do
case Timex.Timezone.get(timezone_code, now) do
%Timex.TimezoneInfo{} = timezone_info ->

View File

@ -23,7 +23,7 @@ defmodule Plausible.TimezonesTest do
assert to_date_in_timezone(~D[2021-01-03], "Etc/UTC") == ~D[2021-01-03]
assert to_date_in_timezone(~U[2015-01-13 13:00:07Z], "Etc/UTC") == ~D[2015-01-13]
assert to_date_in_timezone(~N[2015-01-13 13:00:07], "Etc/UTC") == ~D[2015-01-13]
assert to_date_in_timezone(~N[2015-01-13 19:00:07], "Etc/GMT+12") == ~D[2015-01-14]
assert to_date_in_timezone(~N[2015-01-13 19:00:07], "Etc/GMT+12") == ~D[2015-01-13]
end
test "to_datetime_in_timezone/1" do
@ -36,13 +36,13 @@ defmodule Plausible.TimezonesTest do
second: 7,
calendar: Calendar.ISO,
month: 1,
day: 14,
day: 13,
year: 2015,
minute: 0,
hour: 7,
time_zone: "Etc/GMT-12",
zone_abbr: "+12",
utc_offset: 43_200,
time_zone: "Etc/GMT+12",
zone_abbr: "-12",
utc_offset: -43_200,
std_offset: 0
}