Koo*_*oro 4 datetime date elixir
如何从元组中创建(Ecto.),或者从Elixir中的字符串中解析它?我应该使用Erlang吗?DateTime{DD, MM, YY}DateTime
我用Google搜索但没有找到任何内容,文档中没有关于此事的任何内容,只是DateTime一般情况下 - 例如,如何获取当前日期和时间.
请注意,我不想使用第三方库,例如Timex.
只是添加贾斯汀给出的答案.Elixir的标准库可以解析ISO 8601日期.
iex> Date.from_iso8601("2015-01-23")
{:ok, ~D[2015-01-23]}
Run Code Online (Sandbox Code Playgroud)
或者使用bang-version,可能会引发错误:
iex> Date.from_iso8601!("2015-01-23")
~D[2015-01-23]
Run Code Online (Sandbox Code Playgroud)
如果你想要一个ISO 8601字符串的完整日期时间,你必须对NaiveDateTime感到满意,因为没有可靠的时区信息.
iex> NaiveDateTime.from_iso8601("2015-01-23 23:50:07")
{:ok, ~N[2015-01-23 23:50:07]}
Run Code Online (Sandbox Code Playgroud)
请注意,它只会丢弃时区偏移量.
from_iso8601/1将来会有一个关于DateTime的版本,但它最近被添加,并且从Elixir v1.3.4开始还没有发布.它将保留时区偏移,但将时区设置为UTC.
要获取当前日期和/或时间,您可以使用以下之一
Ecto.Date.utc
Ecto.Time.utc
Ecto.DateTime.utc
DateTime.utc_now
Run Code Online (Sandbox Code Playgroud)
至于将{DD, MM, YY}元组转换为元组Ecto.Date,您将无法使用 ecto 提供的函数来做到这一点。但是,您可以使用{YYYY, MM, DD}元组转换为Ecto.Date.
Ecto.Date.from_erl({2016, 12, 4})
#Ecto.Date<2016-12-04>
Date.from_erl({2016, 12, 4})
{:ok, ~D[2016-12-04]}
Ecto.Time.from_erl({13, 55, 10})
#Ecto.Time<12:10:08>
Ecto.Time.from_erl({13, 55, 10})
{:ok, ~T[13:55:10]}
Ecto.DateTime.from_erl({{2016, 12, 4}, {13, 55, 10}})
#Ecto.DateTime<2016-12-04 13:55:10>
Ecto.Date.from_erl({2016, 12, 4}) |> Ecto.DateTime.from_date()
#Ecto.Date<2016-12-04>
Run Code Online (Sandbox Code Playgroud)
您只需要确保您的数据按照这些函数期望的正确顺序排列即可。
至于从字符串中解析它们,您要么需要引入另一个库,要么自己编写一个解析器。
| 归档时间: |
|
| 查看次数: |
5982 次 |
| 最近记录: |