2

日期以 UTC 格式传递到后端,我想将时间转换为给定的 TZ。我遇到了一个错误,因为 3 月 10 日的 UTC 夏令时与我的测试 TZ (America/Los_Angeles) 不同。

date = #DateTime<2019-03-10 02:25:19.464342Z>
timezone = Timezone.get("America/Los_Angeles", d2)
Timezone.convert(date, timezone)

第 2 行给出以下错误

{:error, {:could_not_resolve_timezone, "America/Los_Angeles", 63719403919, :wall}}

我知道这是因为 DST,但在给定时间,LA 存在于其他日期时间,这就是我正在寻找的,我将如何获得该日期时间?

4

1 回答 1

0

怎么样Timezone.resolve/3

{:ok, date, _} = DateTime.from_iso8601("2019-03-10 02:25:19.464342Z")
unix = DateTime.to_unix(date)
timezone = Timex.Timezone.resolve("America/Los_Angeles", unix)
Timex.Timezone.convert(date, timezone)

输出:

#DateTime<2019-03-09 18:25:19.464342-08:00 PST America/Los_Angeles>
于 2019-03-08T11:33:05.753 回答