我有一个需要添加时区数据的NaiveDateTime。例如,如果我有一个类似于naive_date的~N[2015-10-03 12:00:00.000000]值,并且我希望将它设置为“America/”,那么在长生不老药中,这怎么可能呢?
发布于 2018-07-30 19:09:37
使用Timex软件包,可以:
更新:更好的解决方案
iex> use timex
iex> naive_date = ~N[2015-10-03 12:00:00.000000]
iex> Timex.to_datetime(naive_date, "America/Los_Angeles")
#DateTime<2015-10-03 12:00:00-07:00 PDT America/Los_Angeles>旧溶液
use timex
utc_time = DateTime.from_naive!(~N[2015-10-03 12:00:00.000000], "Etc/UTC")
tz_offset =
Timex.timezone("America/Los_Angeles", utc_time)
|> Timex.Timezone.total_offset()
Timex.shift(utc_time, seconds: -tz_offset)
|> Timezone.convert("America/Los_Angeles")发布于 2018-07-30 19:01:43
根据NaiveDateTime文档:
我们称它们为“天真”,因为这个日期时间表示没有时区。
这意味着NaiveDateTime 不能向对象添加时区数据。
但是,NaiveDateTime可以将转换为可以用DateTime.from_naive!/2保存时区数据的。
DateTime.from_naive!(~N[2015-10-03 12:00:00.000000], "Etc/UTC")https://stackoverflow.com/questions/51600416
复制相似问题