在Ecto时间戳中使用ISO8601日期

时间:2017-10-26 22:49:43

标签: date datetime elixir ecto

Browsing through Ecto.DateTime,似乎已弃用:naive_datetime。我希望以最准确的方式存储时间戳,而我似乎无法找到:naive_datetime为我提供的内容。据我所知,Ecto.DateTime可转换为ISO8601,但它没有说明天真日期时间如何存储在数据库中。

在创建时间戳时是否还有其他可能的选项来指定:

schema "test" do 
  field :name
  timestamps type: :iso8601 # This doesn't work 
end 

我还没有找到其他可能的选项列表。我是否坚持天真的约会时间?

1 个答案:

答案 0 :(得分:2)

NaiveDateTime出了什么问题?时间如何更多准确?只需确保您的服务器在"Etc/UTC"中运行,即可完成设置。

听起来你误解了iso8601是什么:它只是一个字符串表示。此外,使用NaiveDateTime.to_iso8601/2总是可能会ISO8601代表NaiveDateTime

NaiveDateTime.utc_now |> NaiveDateTime.to_iso8601
#⇒ "2017-10-27T05:15:42.355701"

不要害怕“幼稚”一词。在这种情况下,它意味着“它不存储时区。”仅此而已。