2011-01-02 17 views
4

kann mir jemand dabei helfen?wie zeitformat in schienen zu ändern 3.0.1

Aus meiner Sicht habe ich: <% = post.time%>

Es zeigt auf dem Bildschirm für die Zeile: Sat 1. JANUAR 17.18.00 UTC 2000

In jeder Zeile es sagt "Sat Jan 01" + "UTC 2000"

Wie kann ich es loswerden und nur die Zeit anzeigen?

Vielen Dank

Antwort

9
<%= post.date.strftime('%H:%M:%S') %> 

Sie die Referenz für die volle Formatierung lesen Syntax here. Zum Beispiel:

% S - Zweite der Minute (00..60)

% H - Stunde des Tages, 24-Stunden-Uhr (00..23)

. . . und so weiter.

+0

Es tut mir leid, aber es sagt "undefined Methode' strftime 'für Nil: NilClass " – daniel

+1

Ah ... okay, diese Fehlermeldung bedeutet, dass Ihre Post.date ist ein Nil-Objekt (leer). Die Formatierungsmethode, die ich Ihnen gegeben habe, funktioniert, aber sie funktioniert nur zu einem echten Datum. Es klingt, als hätten Sie das Datum nicht in Ihrer Datenbank eingetragen. – Scott

+0

das ist meine Tabelle. Ich habe dort auch Einträge: create_table "Deadlines",: force => true do | t | t.string "title" t.text "Inhalt" t.date "date" t.time "Zeit" t.integer "user_id" t.integer "course_id" t.datetime "created_at" t.datetime "updated_at" end – daniel

3

versuchen so etwas wie dieses

datetime = DateTime.civil(2007, 12, 4, 0, 0, 0, 0) # => Tue, 04 Dec 2007 00:00:00 +0000 

    datetime.to_formatted_s(:db)   # => "2007-12-04 00:00:00" 
    datetime.to_s(:db)      # => "2007-12-04 00:00:00" 
    datetime.to_s(:number)     # => "20071204000000" 
    datetime.to_formatted_s(:short)   # => "04 Dec 00:00" 
    datetime.to_formatted_s(:long)   # => "December 04, 2007 00:00" 
    datetime.to_formatted_s(:long_ordinal) # => "December 4th, 2007 00:00" 
    datetime.to_formatted_s(:rfc822)  # => "Tue, 04 Dec 2007 00:00:00 +0000" 

auch können Sie Ihr eigenes Format wie folgt hinzu:

# config/initializers/time_formats.rb 
    Time::DATE_FORMATS[:month_and_year] = "%B %Y" 
    Time::DATE_FORMATS[:short_ordinal] = lambda { |time| time.strftime("%B #{time.day.ordinalize}") } 
+0

danke für Ihre Antwort! – daniel