2013-03-25 9 views
11

In meiner Rails-Ansicht habe ich den folgenden Code, der eine Datetime anzeigt.Wie formatiere ich Datetime in Rails?

<%= link_to timeslot.opening, [@place, timeslot] %> 

Das Ergebnis dieser Linie ist unter:

2013-02-02 01:00:00 UTC 

Wie ändere ich das es zeigt, so wie:

2/2/13: X:00 PST 
+1

Versuchen Sie - timeslot.opening.strftime (% d /% m /% y:% H:% M:% S% Z) – Ash

+0

Sie könnten die [** Stempel ** Edelstein] (https: // github .com/jeremyw/stamp) oder [** strftime **] (http://strfti.me/). –

Antwort

17

Verwenden Rubys strftime() auf Termine/Datetimes:

<%= link_to timeslot.opening.strftime("%Y %m %d"), [@place, timeslot] %> 

Schauen Sie sich 0 anum herauszufinden, wie die Formatierung funktioniert.

+0

Danke! Dies und die Dokumentation ist sehr hilfreich. Ich habe nicht gefunden, wie man eine Zeit zwischen Zeitzonen umrechnet. In meinem Beispiel ist die Zeit derzeit in UTC, möchte aber PST anzeigen. Weißt du, wie ich das ermöglichen könnte? – sharataka

+0

Willkommen :) Siehe hierzu: http://stackoverflow.com/questions/6118779/how-to-change-default-timezone-for-activerecord-in-rails3 – weltschmerz

+0

perfekt, danke für die Hilfe! – sharataka

5

Sie sollten einen Helfer für diese.

Wenn Sie von UTC zu PST konvertieren möchten, können Sie die in_time_zone Methode verwenden

def convert_time(datetime) 
    time = Time.parse(datetime).in_time_zone("Pacific Time (US & Canada)") 
    time.strftime("%-d/%-m/%y: %H:%M %Z") 
end 

<%= link_to convert_time(timeslot.opening), [@place, timeslot] %> 
0

das genaue Datum Formatierung zu erhalten, die Sie suchen, in Ihrem Beispiel folgendes strftime Format-String verwenden "%-d/%-m/%y: %k:00 PST"

Das mag aber nicht genau das sein, was Sie wollen.Bitte erläutern Sie in Ihrer Frage (a), was Sie mit dem Zeitfeld machen wollen (zB wollen Sie immer eine Uhrzeit zur vollen Stunde anzeigen? X: 00) und (b) Wollen Sie immer PST-Zeiten melden oder möchten Sie die aktuelle Zeitzone drucken oder möchten Sie konvergieren? t zu PST ??