我开发了这个功能:
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"
但我的目标是不显示此结果,而是将此结果与变量相关联
我会尝试按照之前回复中的链接
答案 0 :(得分: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 post和documentation。每次您需要使用格式化功能时,都希望返回此文档。它根本不坚持。
需要调用lists:flatten/1
,因为io_lib:format/2
会返回嵌套列表,可能是出于性能原因,因为输出会经常发送到接受iolists的函数。
另请注意,在将示例中的元组发送到上述函数之前,您需要摆脱前导ok
。只需将其与{ok, DateTime} = get_data_by_transaction(...)
匹配即可完成。