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、適切なパディングを使用するとうまくいきます。

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 の書式指定子で得られるものです。それらについて詳しく知りたい場合は、この投稿ドキュメントを参照してください。書式設定関数で何か凝ったことをする必要があるたびに、このドキュメントに戻ることを期待してください。それは単に固執しません。

出力がiolistsを受け入れる関数に頻繁に送信されるため、おそらくパフォーマンス上の理由から、ネストされたリストを返すため、への呼び出しlists:flatten/1が必要です。io_lib:format/2

また、例のタプルを上記の関数に送信する前に、先頭の を取り除く必要があることに注意してくださいok。単純に一致させるだけ{ok, DateTime} = get_data_by_transaction(...)で完了します。

于 2013-03-18T17:38:26.043 に答える