当日期在DST的不同侧时使用Timezone.convert

时间:2019-03-08 02:51:20

标签: elixir timex

日期以UTC传递到后端,我想将时间转换为给定的TZ。我遇到了一个错误,因为3月10日所在的UTC DST与测试的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存在于其他日期时间中,这正是我要查找的日期,我将如何获取该日期时间?

1 个答案:

答案 0 :(得分: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>