在 Ecto 时间戳中使用 ISO8601 日期
Using ISO8601 dates in Ecto Timestamps
Browsing through Ecto.DateTime,似乎不推荐使用 :naive_datetime
。我想以最准确的表示形式存储时间戳,但我似乎无法找到 :naive_datetime
提供给我的内容。据我所知,Ecto.DateTime
可以转换为 ISO8601,但它没有给出任何关于原始日期时间如何存储在数据库中的指示。
创建时间戳时是否还有其他可能的选项可以指定:
schema "test" do
field :name
timestamps type: :iso8601 # This doesn't work
end
我无法找到其他可能选项的列表。我是否坚持使用天真的日期时间?
NaiveDateTime
怎么了?时间可能 更 准确吗?只需确保 "Etc/UTC"
中的服务器 运行 就可以了。
听起来你误解了 iso8601
是什么:它只是一个字符串表示。此外,使用 NaiveDateTime.to_iso8601/2
总是可能会得到 ISO8601
表示 NaiveDateTime
:
NaiveDateTime.utc_now |> NaiveDateTime.to_iso8601
#⇒ "2017-10-27T05:15:42.355701"
不要害怕“天真”这个词。在这种情况下,它意味着“它不存储时区”。仅此而已。
Browsing through Ecto.DateTime,似乎不推荐使用 :naive_datetime
。我想以最准确的表示形式存储时间戳,但我似乎无法找到 :naive_datetime
提供给我的内容。据我所知,Ecto.DateTime
可以转换为 ISO8601,但它没有给出任何关于原始日期时间如何存储在数据库中的指示。
创建时间戳时是否还有其他可能的选项可以指定:
schema "test" do
field :name
timestamps type: :iso8601 # This doesn't work
end
我无法找到其他可能选项的列表。我是否坚持使用天真的日期时间?
NaiveDateTime
怎么了?时间可能 更 准确吗?只需确保 "Etc/UTC"
中的服务器 运行 就可以了。
听起来你误解了 iso8601
是什么:它只是一个字符串表示。此外,使用 NaiveDateTime.to_iso8601/2
总是可能会得到 ISO8601
表示 NaiveDateTime
:
NaiveDateTime.utc_now |> NaiveDateTime.to_iso8601
#⇒ "2017-10-27T05:15:42.355701"
不要害怕“天真”这个词。在这种情况下,它意味着“它不存储时区”。仅此而已。