【问题标题】:How to convert between date formats in Erlang?如何在 Erlang 中的日期格式之间进行转换?
【发布时间】:2012-12-20 02:21:06
【问题描述】:

我有一个返回日期的函数(名为 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).

正如我所说的函数 test 以这种形式返回一个日期例如 "01-Jun-2012"

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

我想我应该开发一个函数,它以这种形式(日-月-年)的日期作为参数,作为这个函数的结果,以这种形式的月/年日期

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

正如我所说的函数 test 返回这种日期(在 test 的代码中,我执行 http 请求以返回这种日期日月- year ( 是 php 脚本的返回,


谢谢,但是当我使用 ec_date:parse 进行测试时,我遇到了这个错误** 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)

【问题讨论】:

  • 为了使用 ec_date 模块,您需要将该文件添加为 rebar 依赖项。或者只是将链接存储库中的 ec_date.erl 复制到您自己项目的源代码中。

标签: erlang date-formatting


【解决方案1】:

string:split/2string:to_lower/1 的组合和一个看起来像这样的函数:

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

应该可以。还要搜索 github,因为那里可能已经有适合您格式的日期解析模块......带有测试。

【讨论】:

    【解决方案2】:

    查看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"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-12
      • 1970-01-01
      • 1970-01-01
      • 2017-09-25
      • 2013-12-04
      • 1970-01-01
      • 1970-01-01
      • 2011-01-05
      相关资源
      最近更新 更多