Sono nuovo di Elixir, provando a portare un'API Rails a Phoenix come progetto di apprendimento.Formattazione di un tempo in elisir
Ho un Postgres campo tempo, che ho aggiunto ad un regime di Ecto:
field :start_time, Ecto.Time
Problema: mi piacerebbe uscita una versione formattata di 12 ore di un tempo come 16:30 come stringa: 4:30 pm, per esempio. Ho avuto problemi a trovare un modo facile/standard per farlo.
Questo è il più vicino che ho ancora giunta ad una soluzione:
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
Questo mi sembra un pezzo ridicolo e assurdamente lunghi di codice per qualcosa che immagino già dispone di un'implementazione più conciso e di serie; inoltre ha il problema di emettere 2: 0pm invece di 2:00 pm - la formattazione dello 0 con uno zero finale era anche un pezzo di codice lungo e complicato su cui stavo lavorando - a quel punto ho iniziato a sentire che le cose stavano andando via fuori pista.
Consiglio apprezzato!
Questa è una versione più pulita della stessa soluzione con cui ho finito, quindi i minuti sono ancora scarsamente formattati come 2: 0 anziché 2:30 pm. –
Grazie per il suggerimento Pawel, questo mi ha aiutato a trovare una soluzione! –
Oops, ci siamo dimenticati. È necessario utilizzare la direttiva di formato '{0m}' per i minuti da eseguire con gli zeri. –