Elixir 自从不推荐使用Ecto.DateTime以来,如何创建新的DateTime?

Elixir 自从不推荐使用Ecto.DateTime以来,如何创建新的DateTime?,elixir,phoenix,Elixir,Phoenix,我目前有一个日期和一个时间,我真的想把它合并成一个日期时间结构 在Ecto 3之前,您可以使用Ecto.DateTime.from_date_和_time执行此操作,但在新文档中,由于Ecto类型已被弃用,因此我找不到等效的函数 该函数当前看起来像: def add_datetime(date_as_string) do (_, date = Date.from_iso8601(date) end_time = #T[23:59:59] datetime = datetime_add(E

我目前有一个
日期
和一个
时间
,我真的想把它合并成一个
日期时间
结构

在Ecto 3之前,您可以使用
Ecto.DateTime.from_date_和_time
执行此操作,但在新文档中,由于Ecto类型已被弃用,因此我找不到等效的函数

该函数当前看起来像:

def add_datetime(date_as_string) do
 (_, date = Date.from_iso8601(date)
 end_time = #T[23:59:59]

 datetime = datetime_add(Ecto.DateTime.from_date_and_time(date, end_time), -3, "day")
end
这个特定项目的一个限制是,如果可能的话,我希望避免添加第三方库,如Timex,但在查看当前的Elixir文档后,我迷失了方向。

您可以使用


不要使用所需的偏移量,或者UTC使用
Z

如果您不关心时区信息,您也可以使用
NaiveDateTime

datetime= NaiveDateTime.new(date_struct, time_struct)
|> DateTime.from_naive("Etc/UTC")

这非常有效。您是否介意编辑答案,添加使其成为合法的
日期时间所需的“T”?所以
“{Date.to_iso8601(Date)}T{Time.to_iso8601(Time)}+03:30”
那么我可以接受它。
datetime= NaiveDateTime.new(date_struct, time_struct)
|> DateTime.from_naive("Etc/UTC")