2011-09-10 10 views
25

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

<%= @issue.created_at %> 

Le uscite sopra il seguente timestamp:

2011-09-10 14:44:24 UTC 

Qual è il modo più semplice di alterare il modo in cui questo display? Vorrei qualcosa di simile:

10 Sept. 2011 

e quindi in qualche modo chiamare di nuovo con un formato diverso:

14:44 

così mi può chiamare due volte e unire le due cose insieme:

10 Sept. 2011 
14:44 

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

risposta

13

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.

+1

Utilizzando l'esempio in questo collegamento, ora ho <% = @ issue.created_at,: format =>: short%>, che genera un errore Exception. Qualche idea? – dannymcc

+2

per favore usa il metodo l() helper –

76

La cosa più semplice da fare è quello di utilizzare la funzione strftime

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

Si potrebbe mettere quei due chiamate in aiutanti separati, se vi trovate a fare un sacco.

+1

ottengo un errore di metodo se metto quelli nel file helper Issues. Dovrei alterare il modo in cui chiamo create_at? – dannymcc

+2

Alcuni potrebbero trovare questo utile insieme a questa soluzione: [strftime docs] (http://www.ruby-doc.org/core-1.9.3/Time.html#method-i-strftime) – stereoscott

+0

questo dovrebbe essere accettato risposta! –

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

nel locale YAML (app/config/locale/country_id.yml) è necessario dichiarare

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

Data formattazione dovrebbe essere dichiarato all'interno del file di definizione YAML i18n per una facile configurazione, ed altro formato della data potrebbe essere trovato here

7

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

+1

Molto intelligente .... – kstratis

+0

Aggiungi tempo :: DATE_FORMATS [: default] = "% d /% m /% Y% H:% M" o qualche variazione di questa stringa in un file in config/initializers (puoi chiamarlo date_and_time.rb) – Mark

1

Si può fare:

@issue.created_at.to_date.iso8601