如何在elixir中以ISO 8601格式生成当前日期?
我需要生成一个与以下格式相同的当前时间字符串:如何在elixir中以ISO 8601格式生成当前日期?,elixir,Elixir,我需要生成一个与以下格式相同的当前时间字符串:20130524000000z 该示例是2013年5月24日星期五00:00:00 GMT的时间戳 我该怎么做?有没有一种方法可以在没有外部软件包的情况下完成这项工作?我已经成功地使用了以下代码: {{yy, mm, dd}, {hh, mi, ss}} = :calendar.universal_time "~.4.0w~.2.0w~.2.0wT~.2.0w~.2.0w~.2.0wZ" |> :io_lib.format([yy, mm, d
20130524000000z
该示例是2013年5月24日星期五00:00:00 GMT的时间戳
我该怎么做?有没有一种方法可以在没有外部软件包的情况下完成这项工作?我已经成功地使用了以下代码:
{{yy, mm, dd}, {hh, mi, ss}} = :calendar.universal_time
"~.4.0w~.2.0w~.2.0wT~.2.0w~.2.0w~.2.0wZ"
|> :io_lib.format([yy, mm, dd, hh, mi, ss])
|> IO.iodata_to_binary
但也许有更好的方法?更新2016-07-18 Elixir和up本机支持此功能:
iex> DateTime.utc_now() |> DateTime.to_iso8601()
"2016-07-18T21:49:08.132428Z"
原件2015-12-01(2016-07-18增加版本差异,谢谢@sebastian_k)
如果您不介意使用外部库,您可以使用优秀的库:
()
()
()
从v3(2016年7月)开始,现在应该是Timex.now |>Timex.format(“{ISO:Extended:Z}”)
,或者Timex.now(“欧洲/阿姆斯特丹”)|>Timex.format(“{ISO:Extended:Z}”)
。
iex> Timex.Date.local |> Timex.DateFormat.format("{ISOz}")
{:ok, "2015-12-01T09:40:44.716Z"}
iex> Timex.DateTime.local() |> Timex.format("{ISOz}")
{:ok, "2015-12-01T09:40:44.716Z"}
iex> Timex.now() |> Timex.format("{ISO:Extended:Z}")
{:ok, "2015-12-01T09:40:44.716417ZZ"}