Datetime elixir UTC日期时间铸造在ecto模型和参数中

Datetime elixir UTC日期时间铸造在ecto模型和参数中,datetime,casting,elixir,phoenix-framework,ecto,Datetime,Casting,Elixir,Phoenix Framework,Ecto,当我创建一个表时,我像这样定义我的表字段 add(:arrive_at, :utc_datetime) 在用于变更集的模型中 attr(:arrive_at, :utc_datetime) 但是,当我从任何设备发送日期时间(即使带有时区)时,变更集将忽略时区信息,仅转换日期时间部分,例如2018-02-25 18:40:52.492657+03:00将转换为#datetime。如何获得正确的演员表工作旧的Exto版本中有一个bug,或者在Exto2.1.6中没有处理这个问题我不清楚。但我通过

当我创建一个表时,我像这样定义我的表字段

add(:arrive_at, :utc_datetime)
在用于变更集的模型中

attr(:arrive_at, :utc_datetime)

但是,当我从任何设备发送日期时间(即使带有时区)时,变更集将忽略时区信息,仅转换日期时间部分,例如2018-02-25 18:40:52.492657+03:00将转换为#datetime。如何获得正确的演员表工作

旧的Exto版本中有一个bug,或者在Exto2.1.6中没有处理这个问题我不清楚。但我通过将ecto升级到最新版本并将配置:app,app.Repo,migration_primary_key:[type::serial],传递到我的数据库配置选项,将其修复。(因为没有设置主键类型的升级会将所有整数序列键更新为大整数,我必须以这种方式更新许多函数和触发器)

这很奇怪。。如果在
iex-S mix
exto.Type.cast:utc_datetime,“2018-02-25 18:40:52.492657+03:00”中运行此命令,您会得到什么。我得到了{code>{:ok,#DateTime}
@Dogbert我得到了{:ok,#DateTime}Erlang/OTP20和elixir版本1.6.1(用OTP20编译)我想我找到了奇怪的行为原因,它的旧的异位版本**“异位”:{:hex,:异位,“2.1.6”**(从mix.lock文件复制)我没有升级ecto,因为它使用长整数作为主键。如果我升级ecto,我必须更改许多触发器、函数等。但是如果有一种方法可以升级ecto并使用相同的整数键,那就一切都好了