Ich möchte Datumsangaben im folgenden Format anzeigen: kurzer Wochentag, kurzer Monat, Tag des Monats ohne führende Null, jedoch mit dem Suffix "th", "st", "nd" oder "rd".
An dem Tag, an dem diese Frage gestellt wurde, wird beispielsweise "Do 2. Oktober" angezeigt.
Ich verwende Ruby 1.8.7 und Time.strftime scheint dies einfach nicht zu tun. Ich würde eine Standardbibliothek bevorzugen, falls eine existiert.
ruby-on-rails
ruby
date
Jonathan Tran
quelle
quelle
Antworten:
Verwenden Sie die Ordinalisierungsmethode aus 'active_support'.
Hinweis: Wenn Sie IRB mit Ruby 2.0 verwenden, müssen Sie zuerst Folgendes ausführen:
quelle
Sie können die ordinale Hilfsmethode von active_support für Zahlen verwenden.
quelle
Wenn Sie die Antwort von Patrick McKenzie etwas weiter gehen, können Sie eine neue Datei in Ihrem
config/initializers
Verzeichnis mit dem Namendate_format.rb
(oder was auch immer Sie wollen) erstellen und diese darin ablegen:Dann können Sie in Ihrem Ansichtscode jedes Datum formatieren, indem Sie ihm einfach Ihr neues Datumsformat zuweisen:
Es ist einfach, es funktioniert und es ist leicht aufzubauen. Fügen Sie einfach weitere Formatzeilen in die Datei date_format.rb für jedes Ihrer verschiedenen Datumsformate ein. Hier ist ein ausführlicheres Beispiel.
quelle
Time::DATE_FORMATS.merge!(:my_date => lambda { |time| time.strftime("%a, %b #{ActiveSupport::Inflector.ordinalize(time.day)}") })
quelle
Ich mag Bartosz 'Antwort, aber hey, da es sich um Rails handelt, machen wir einen Schritt weiter. (Bearbeiten: Obwohl ich nur die folgende Methode monkeypatch wollte, stellt sich heraus, dass es einen saubereren Weg gibt.)
DateTime
Instanzen verfügen über eineto_formatted_s
von ActiveSupport bereitgestellte Methode, die ein einzelnes Symbol als Parameter verwendet und, wenn dieses Symbol als gültiges vordefiniertes Format erkannt wird, einen String mit der entsprechenden Formatierung zurückgibt.Diese Symbole werden definiert durch
Time::DATE_FORMATS
. Dies ist ein Hash von Symbolen für Zeichenfolgen für die Standardformatierungsfunktion ... oder procs. Bwahaha.Aber hey, wenn Sie der Gelegenheit zum Monkeypatch nicht widerstehen können, können Sie dem immer eine sauberere Oberfläche geben:
quelle
Erstellen Sie Ihr eigenes
%o
Format.Initialisierer
config/initializers/srtftime.rb
Verwendung
Sie können dies auch mit
Date
und verwendenDateTime
:quelle
Time
in Ihrem Projekt gepatcht ?Obwohl Jonathan Tran sagte, er suche zuerst nach dem abgekürzten Wochentag, gefolgt vom abgekürzten Monat, denke ich, dass es für Leute, die hier landen, nützlich sein könnte, zu wissen, dass Rails sofort mehr Unterstützung bietet häufig verwendbarer langer Monat, ordinale Tageszahl, gefolgt vom Jahr, wie in
June 1st, 2018
.Es kann leicht erreicht werden mit:
Oder:
Sie können sich auch an eine Zeitinstanz halten, wenn Sie dies wünschen:
Weitere Formate und Kontexte zum Erstellen eines benutzerdefinierten Formats finden Sie in den Rails-API-Dokumenten .
quelle