首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Erlang --我如何将RFC1123日期分解为Erlang术语?

Erlang --我如何将RFC1123日期分解为Erlang术语?
EN

Stack Overflow用户
提问于 2014-02-17 11:30:43
回答 4查看 1K关注 0票数 1

如果不使用第三方模块,我需要采取哪些步骤来转换这个模块:

代码语言:javascript
复制
<<"Mon, 17 Feb 2014 11:07:53 GMT">>

变成这样?:

代码语言:javascript
复制
[17, 2, 2014, 10, 07, 53]

我搜索到的大多数答案都建议使用图书馆。到目前为止,我怀疑通过匹配格式化日期字符串的模式,我会有所进展。

类似于:

代码语言:javascript
复制
<<_:5/binary, Date:2/binary>> = <<"Mon, 17 Feb 2014 11:07:53 GMT">>...

我认为应该产生以下的“匹配”

代码语言:javascript
复制
Date = 17...

这是基于在这里发现的一个想法- https://groups.google.com/forum/#!topic/erlang-programming/OpXSqt3U86c -这是一个好的方法吗?

是否有任何BIF或模块可以帮助这一点?此外,我将如何将"Feb“转换为整数?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-02-17 11:37:06

让我们在shell中试一试:

代码语言:javascript
复制
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">>

对,我们需要同时匹配其余的二进制文件:

代码语言:javascript
复制
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的字节。

代码语言:javascript
复制
4> binary_to_integer(Date).
17

至于将月份名称转换为整数,通常这样做的方法是使用函数:

代码语言:javascript
复制
month_name_to_integer("Jan") -> 1;
month_name_to_integer("Feb") -> 2;
...
month_name_to_integer("Dec") -> 12.
票数 2
EN

Stack Overflow用户

发布于 2014-02-17 14:21:46

您可以使用节拍库进行日期时间格式化和解析。

票数 2
EN

Stack Overflow用户

发布于 2014-02-18 04:47:54

代码语言:javascript
复制
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].

产出如下:

代码语言:javascript
复制
[17,2014,11,7,53]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21827905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档