2013-03-18 3 views
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 

поэтому, чтобы преобразовать мои данные в новый формат

может sameone помочь мне решить мою проблему

Стараюсь с этим кодом:

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

Помогает ли [этот ответ] (http://stackoverflow.com/a/14179628/113848)? – legoscia

+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(...), вы сделаете это.

+0

благодарю вас за ваш ответ. У меня есть такой результат, когда я проверяю ваш код: «06/03/2013 7:12» , но я хочу связать этот результат с переменной, –

+0

Так что свяжите это переменной: 'MyVar = format_date (...).' –

Смежные вопросы