如果不使用第三方模块,我需要采取哪些步骤来转换这个模块:
<<"Mon, 17 Feb 2014 11:07:53 GMT">>变成这样?:
[17, 2, 2014, 10, 07, 53]我搜索到的大多数答案都建议使用图书馆。到目前为止,我怀疑通过匹配格式化日期字符串的模式,我会有所进展。
类似于:
<<_:5/binary, Date:2/binary>> = <<"Mon, 17 Feb 2014 11:07:53 GMT">>...我认为应该产生以下的“匹配”
Date = 17...这是基于在这里发现的一个想法- https://groups.google.com/forum/#!topic/erlang-programming/OpXSqt3U86c -这是一个好的方法吗?
是否有任何BIF或模块可以帮助这一点?此外,我将如何将"Feb“转换为整数?
发布于 2014-02-17 11:37:06
让我们在shell中试一试:
1> <<_:5/binary, Date:2/binary>> = <<"Mon, 17 Feb 2014 11:07:53 GMT">>.
** exception error: no match of right hand side value <<"Mon, 17 Feb 2014 11:07:53 GMT">>对,我们需要同时匹配其余的二进制文件:
2> <<_:5/binary, Date:2/binary, Rest/binary>> = <<"Mon, 17 Feb 2014 11:07:53 GMT">>.
<<"Mon, 17 Feb 2014 11:07:53 GMT">>
3> Date.
<<"17">>现在,Date是一个二进制文件,包含了ASCII数字1和7的字节。
4> binary_to_integer(Date).
17至于将月份名称转换为整数,通常这样做的方法是使用函数:
month_name_to_integer("Jan") -> 1;
month_name_to_integer("Feb") -> 2;
...
month_name_to_integer("Dec") -> 12.发布于 2014-02-17 14:21:46
您可以使用节拍库进行日期时间格式化和解析。
发布于 2014-02-18 04:47:54
Bin = <<"Mon, 17 Feb 2014 11:07:53 GMT">>,
L = binary_to_list(Bin),
{match, Res} =
re:run(L, "[0-9]+", [global, {capture, all, list}]),
[list_to_integer(X) || [X] <- Res].产出如下:
[17,2014,11,7,53]https://stackoverflow.com/questions/21827905
复制相似问题