1

我开发了这个功能:

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"

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

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

4

1 回答 1

1

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

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 的格式说明符得到的。如果您想了解更多关于它们的信息,请参阅这篇文章文档。每次你需要对格式化函数做一些花哨的事情时,都希望返回到这个文档。它根本不粘。

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

另请注意,在将示例中的元组发送到上述函数之前,您需要去掉前导的ok. 简单地匹配它就{ok, DateTime} = get_data_by_transaction(...)可以完成它。

于 2013-03-18T17:38:26.043 回答