gpt4 book ai didi

Javascript 日期对象到 Elixir Ecto.DateTime

转载 作者:行者123 更新时间:2023-12-01 03:38:43 25 4
gpt4 key购买 nike

我了解 JavaScript,但对 Elixir 和 Phoenix 还很陌生。如何从前端获取 javascript 对象并将其转换为 Ecto 可以转换为数据库的 DateTime 值?

此外,它会保留时区吗?或者我应该如何处理这些?

最佳答案

您可以在 javascript 和 Elixir 后端之间使用 iso8601 日期时间字符串。

将其转换为 Ecto 模式的最简单方法是将字段声明为 utc_datetime

然后,您可以使用 Ecto.Changeset.cast 自动将字符串转换为 %DateTime{} 结构。

defmodule Blog do
use Ecto.Schema
schema "blog" do
field :publish_at, :utc_datetime
end

def new(params) do
%Blog{}
|> Ecto.Changeset.cast(params, [:publish_at])
|> Ecto.Changeset.apply_changes()
end
end

iex> Blog.new(%{"publish_at" => "2017-01-01T12:23:34Z"})
%Blog{__meta__: #Ecto.Schema.Metadata<:built, "blog">, id: nil, publish_at: %DateTime{calendar: Calendar.ISO, day: 1, hour: 12, microsecond: {0, 0}, minute: 23, month: 1, second: 34, std_offset: 0, time_zone: "Etc/UTC", utc_offset: 0, year: 2017, zone_abbr: "UTC"}}

注意:使用此方法将丢弃任何时区偏移。

关于Javascript 日期对象到 Elixir Ecto.DateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44057385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com