所以我刚开始使用 Elixir 并看到当前master
添加了~U[2015-01-13 13:00:07Z]
对创建/解析 UTC 日期的印记的支持。
代码如下:
defmodule MySigils do
defmacro sigil_U(datetime_string, modifiers)
defmacro sigil_U({:<<>>, _, [string]}, []) do
Macro.escape(datetime_from_utc_iso8601!(string))
end
defp datetime_from_utc_iso8601!(string) do
case DateTime.from_iso8601(string) do
{:ok, utc_datetime, 0} ->
utc_datetime
{:ok, _datetime, _offset} ->
raise ArgumentError,
"cannot parse #{inspect(string)} as UTC datetime, reason: :non_utc_offset"
{:error, reason} ->
raise ArgumentError,
"cannot parse #{inspect(string)} as UTC datetime, reason: #{inspect(reason)}"
end
end
end
在我的代码中,我试图将它与变量一起使用timestamp
timestamp = Map.get(item, "timestamp")
~U[timestamp]
** (ArgumentError) cannot parse "timestamp" as UTC datetime, reason: :invalid_format
但timestamp
被解释为原样,而不是前一场比赛。
有没有办法让它工作?我需要引用/取消引用某些内容吗?除了DateTime.from_iso8601/1
直接使用。