Jestem nowy w Elixir, próbując przenieść interfejs Rails API do Phoenix jako projekt do nauki.Formatowanie czasu w eliksiru
Mam PostgreSQL pola czasu, które dodałem do programu ekto:
field :start_time, Ecto.Time
Problem: Chciałbym wyjście 12-godzinny sformatowaną wersję czas taki jak 16:30 jako ciąg znaków: 16:30, na przykład. Mam problem ze znalezieniem łatwego/standardowego sposobu robienia tego.
To jest najbliżej mam jeszcze dojść do rozwiązania:
def format_time(time) do
{:ok, {hours,minutes,y, z}} = Ecto.Time.dump(time)
{hour, ampm} = Timex.Time.to_12hour_clock(hours)
"#{hour}:#{minutes}#{ampm}"
end
Wydaje się to śmieszne i absurdalnie długi kawałek kodu na coś ja już sobie wyobrazić jest bardziej zwięzły i standardowego wdrożenia; poza tym ma problem z wyjściem 2: 0pm zamiast 14:00 - formatowanie 0 z końcowym zerem było dodatkowo długim i skomplikowanym kodem, nad którym pracowałem - w którym momencie zacząłem czuć, że wszystko idzie droga poza tory.
Porady doceniane!
To jest czystsza wersja tego samego rozwiązania, z którego skorzystałem, więc minuty są nadal słabo sformatowane jako 2: 0pm zamiast 14:30. –
Dzięki za podpowiedź Pawel, pomogło mi to znaleźć rozwiązanie! –
Ups, zapomniałem o tym. Musisz użyć dyrektywy w formacie '{0m}', aby minutę zastąpić zerami. –