【问题标题】:date conversion in erlangerlang中的日期转换
【发布时间】:2013-03-19 23:21:53
【问题描述】:

我开发了这个功能:

get_data_by_transaction(TransactionCode)->

 Q = qlc:q([{X#transaction.datetime} || X <- mnesia:table(transaction),
                X#transaction.transaction_code =:= TransactionCode]),
    case do(Q) of
        [{K}] ->  
        {ok, K};

        [] ->
            {error, notfound}
    end.

当我测试这个函数时,我得到了这个结果:

{ok,{{2013,3,6},{7,12,49}}}

我的目标是得到这样的结果:

06/03/2013 7:12

所以我应该将我的数据转换为新格式

谁能帮我解决我的问题

我尝试使用此代码:

format_date({{Year, Month, Day}, {Hour, Minute, _}}) ->
    lists:flatten(
        io_lib:format("~2..0B/~2..0B/~4..0B ~B:~2..0B", [Day, Month, Year, Hour,Minute])). 

当我运行这段代码时,我有:

3> format_date({{2013,3,6},{7,12,3}}).           
"06/03/2013 7:12"

但我的目标不是显示此结果,而是将此结果与变量相关联

我会尝试按照上一个回复中的链接进行操作

【问题讨论】:

标签: erlang


【解决方案1】:

如果所需的输出格式与您的示例中看起来一样简单,则带有适当填充的io_lib:format/2 就可以解决问题:

format_date({{Year, Month, Day}, {Hour, Minute, _}}) ->
    lists:flatten(
        io_lib:format("~2..0B/~2..0B/~4..0B ~B:~2..0B", [Day, Month, Year, Hour, Minute])).

抱歉,很抱歉,这就是您使用 Erlang 的格式说明符时得到的结果。如果您想了解有关它们的更多信息,请参阅 this postdocumentation。每次您需要对格式化函数做一些花哨的事情时,都希望返回到这个文档。它根本不粘。

调用lists:flatten/1 是必需的,因为io_lib:format/2 返回一个嵌套列表,可能是出于性能原因,因为输出会经常发送到接受iolists 的函数。

还请注意,在将示例中的元组发送到上述函数之前,您需要去掉前导的 ok。只需将其匹配为 {ok, DateTime} = get_data_by_transaction(...) 即可完成。

【讨论】:

  • 感谢您的回复,我在测试您的代码时得到了这种结果:“06/03/2013 7:12”但我想将此结果与变量相关联,
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-23
  • 2012-12-20
  • 2018-12-21
  • 2011-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多