在erlang中转换日期

时间:2013-01-05 23:30:59

标签: erlang

我有一个函数(名为 test ),它返回一个日期

我举一个这样的回报的例子:“01-Jun-2012”

现在我想以月/年的形式提出这个日期

所以“01-Jun-2012”应该变成“06/2012”

因为我想使用此日期发送短信

send(To,Date) ->
Message =io_lib_format("pr%EAt %E0 payer le ~s",[Date]),
    Url = io_lib:format("http://192.168.1.8/sendsms?tel=~s&text=~s", [To, Message]),
     http:request(lists:flatten(Url), sms).

正如我所说,功能测试以此形式返回日期“01-Jun-2012”

我应该将此表单转换为另一种形式月/年(结果是我的例子06/2012)

我认为我应该开发一个函数,该函数以此形式作为参数(日 - 月 - 年)作为此函数的结果,以此形式显示月份/年

请注意,我给你的日期应该转换的相同例子:02-Jan-2012,01-Feb-2012,01-Mar-2012,02-Apr-2012,01-May-2012,01-Jun -2012

按照我说的功能的测试返回这种过时(在的测试的代码我为了返回这种日期的执行http请求天月 - 年(是PHP脚本的回归,


谢谢,但是当我使用ec_date进行测试时:解析我有这个错误** exception error: undefined function ec_date:parse/1

请注意,我使用的是erlang的第13版

Erlang R13B03 (erts-5.7.4) [source] [rq:1] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.7.4  (abort with ^G)

2 个答案:

答案 0 :(得分:1)

查看ec_date in erlware_commons,它是dh_date的分支。 (两者都完全有效,但我个人使用ec_date变体)/

它们都可用于此目的:解析和格式化日期。

> OrigDate = "01-Jun-2012",
> ParsedDate = ec_date:parse(OrigDate),
> FinalDate = ec_date:format("m/Y",ParsedDate).
"06/2012"

答案 1 :(得分:0)

string:split/2string:to_lower/1和一个类似的函数的组合:

month("jan") -> 1;
...
month("dec") -> 12.

应该有效。还要搜索github,因为你的格式可能已经有了日期解析模块......有了测试。