如何在elixir中生成ISO 8601格式的当前日期?

NoD*_*ame 1 elixir

我需要以与以下相同的格式生成当前时间的字符串: 20130524T000000Z

该示例是一个时间戳Fri, 24 May 2013 00:00:00 GMT.

我该怎么办?有没有办法在没有外部包装的情况下做到这一点?

pot*_*lad 5

更新2016-07-18

Elixir 1.3及以上版本支持此版本:

iex> DateTime.utc_now() |> DateTime.to_iso8601()
"2016-07-18T21:49:08.132428Z"
Run Code Online (Sandbox Code Playgroud)

原创2015-12-01 (版本差异已添加2016-07-18,感谢@sebastian_k)

如果您不介意使用外部库,可以使用优秀的timex库:

timex 1.x( docs)

iex> Timex.Date.local |> Timex.DateFormat.format("{ISOz}")
{:ok, "2015-12-01T09:40:44.716Z"}
Run Code Online (Sandbox Code Playgroud)

timex 2.x( docs)

iex> Timex.DateTime.local() |> Timex.format("{ISOz}")
{:ok, "2015-12-01T09:40:44.716Z"}
Run Code Online (Sandbox Code Playgroud)

timex 3.x( docs)

iex> Timex.now() |> Timex.format("{ISO:Extended:Z}")
{:ok, "2015-12-01T09:40:44.716417ZZ"}
Run Code Online (Sandbox Code Playgroud)

  • 从v3(2016年7月)开始,现在应该是`Timex.now |> Timex.format("{ISO:Extended:Z}")`或`Timex.now("Europe/Amsterdam")|> Timex .format( "{ISO:扩展:Z}")`. (2认同)