24 Stimmen

Formatierung von Zeitstempeln

Wie formatiert man Rails-Zeitstempel in einem besser lesbaren Format? Wenn ich einfach ausdrucke created_at o updated_at meiner Ansicht nach so:

<% @created = scenario.created_at %>

Dann werde ich bekommen:

2009-03-27 23:53:38 UTC

25voto

Greg Campbell Punkte 15052

El strftime (aus Ruby's Time) und to_formatted_s (aus dem ActiveSupport von Rails) sollten alle Ihre Anforderungen an die Zeitformatierung erfüllen können.

0 Stimmen

Vielen Dank dafür. Aber es scheint nur in der Konsole und nicht in meine Rails-Ansichten zu arbeiten.

0 Stimmen

Können Sie ein ausführlicheres Beispiel für den Code geben, den Sie in der Ansicht verwenden? In meinen View-Tests scheint er wie erwartet zu funktionieren. Wo/wie zeigen Sie @created an?

3 Stimmen

@GregCampbell: ein ausführlicheres Beispiel: @comment.created_at.strftime("%d %b %y") #Output: 05 Jul 10 . Quelle: techoctave.com/c7/posts/23-rails-date-formate

10voto

acw Punkte 1065

Werfen Sie einen Blick auf die I18n-Funktionalität. Sie ermöglicht es Ihnen, in Ihren Ansichten Folgendes zu tun:

<%= localize(scenario.created_at, :format => :long) %>

wobei die Formate in Ihren Gebietsschemata definiert sind. Mehr Infos

7voto

wildDAlex Punkte 347

Auch

<%= l scenario.created_at, :format => :sample) %>

Und in locales/en.yml (je nach Sprache)

  en:
    time:
      formats:
        sample: '%d.%m.%Y'

Weitere Informationen finden Sie unter - http://guides.rubyonrails.org/i18n.html

0 Stimmen

Dies ist eine saubere und elegante Lösung

4voto

Devaroop Punkte 41

Time.now().to_i funktioniert hervorragend. Für die Rückwärtskonvertierung verwenden Sie Time.at(argument)

0voto

ekauffmann Punkte 140

Sie können verwenden strftime um den Zeitstempel auf verschiedene Weise zu formatieren. Ich bevorzuge some_data[:created_at].strftime('%F %T') . %F zeigt "2017-02-08" (Kalenderdatum erweitert), und %T zeigt "08:37:48" (Ortszeit erweitert).

Bei Problemen mit der Zeitzone fügen Sie diese Zeilen zu Ihrem config/application.rb Datei

config.time_zone = 'your_timezone_string'
config.active_record.default_timezone = :local

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X