it-swarm.it

Cambiare il formato di created_at in Rails 3.1?

Sto chiamando la data in cui è stato creato un record in un'app di base che esegue Rails 3.1.

<%= @issue.created_at %>

Quanto sopra produce il seguente timestamp:

2011-09-10 14:44:24 UTC

Qual è il modo più semplice di alterare il modo in cui viene visualizzato? Vorrei qualcosa del genere:

10 Sept. 2011

e poi in qualche modo chiamarlo di nuovo con un formato diverso:

14:44

quindi posso chiamarlo due volte e unire i due insieme:

10 Sept. 2011
14:44

Il motivo per cui voglio chiamarlo due volte piuttosto che creare un helper per formattare una data/ora in due righe è quello di permettermi di chiamare la data in alcuni punti e solo il tempo in altri.

25
dannymcc

Vorrei usare I18n. Dai un'occhiata ad alcuni esempi http://guides.rubyonrails.org/i18n.html#adding-date-time-formats . È un modo pulito e flessibile per la formattazione di date e orari.

13
lucapette

La cosa più semplice da fare è usare la funzione strftime

# Day / Month / Year
@issue.created_at.strftime("%d %b. %Y")
# Hour:Min
@issue.created_at.strftime("%H:%M")

Potresti mettere quelle due chiamate in aiutanti separati se ti trovi a farlo molto.

76
spike
<%= l(@issue.created_at, :format=>:your_format) %>

in locale YAML (app/config/locale/country_id.yml) devi dichiararlo

time:
 formats:
  your_format: '%d %b. %Y'
  your_another_format: '%I:%M'

La formattazione della data deve essere dichiarata all'interno del tuo file di definizione YAML i18n per una facile configurazione e potrebbe essere trovato un altro formato di data qui

9
Agung Prasetyo

Controlla http://www.foragoodstrftime.com/ per un modo semplice per personalizzare la formattazione di data/ora @spike

7
akeyva

Tu puoi fare:

@issue.created_at.to_date.iso8601

1
flyer88

to_s accetta anche l'argomento di input del formato:

http://apidock.com/Rails/ActiveSupport/TimeWithZone/to_s

0
Daniel Korenblum