Chcę wyświetlać daty w formacie: krótki dzień tygodnia, krótki miesiąc, dzień miesiąca bez wiodącego zera, ale z przyrostkiem „th”, „st”, „nd” lub „rd”.
Na przykład w dniu, w którym zadano to pytanie, będzie wyświetlany komunikat „Czw 2 października”.
Używam Ruby 1.8.7, a Time.strftime po prostu wydaje się tego nie robić. Wolałbym bibliotekę standardową, jeśli taka istnieje.
ruby-on-rails
ruby
date
Jonathan Tran
źródło
źródło
Odpowiedzi:
Użyj metody porządkowania z „active_support”.
Uwaga, jeśli używasz IRB z Ruby 2.0, musisz najpierw uruchomić:
źródło
Możesz użyć porządkowej metody pomocnika active_support na liczbach.
źródło
Idąc nieco dalej z odpowiedzią Patricka McKenziego, możesz utworzyć nowy plik w swoim
config/initializers
katalogu o nazwiedate_format.rb
(lub jakkolwiek chcesz) i umieścić w nim to:Następnie w kodzie widoku możesz sformatować dowolną datę, po prostu przypisując jej nowy format daty:
To proste, działa i jest łatwe w tworzeniu. Po prostu dodaj więcej wierszy formatu w pliku date_format.rb dla każdego z różnych formatów daty. Oto bardziej szczegółowy przykład.
źródło
Time::DATE_FORMATS.merge!(:my_date => lambda { |time| time.strftime("%a, %b #{ActiveSupport::Inflector.ordinalize(time.day)}") })
źródło
Podoba mi się odpowiedź Bartosza, ale hej, skoro mówimy o Railsach, zróbmy jeden krok naprzód w przebiegłym. (Edycja: Chociaż zamierzałem po prostu łączyć z małpami następującą metodę, okazuje się, że istnieje czystszy sposób.)
DateTime
wystąpienia mająto_formatted_s
metodę dostarczoną przez ActiveSupport, która przyjmuje pojedynczy symbol jako parametr i, jeśli ten symbol jest rozpoznawany jako prawidłowy wstępnie zdefiniowany format, zwraca ciąg znaków z odpowiednim formatowaniem.Te symbole są zdefiniowane przez
Time::DATE_FORMATS
, który jest skrótem symboli do łańcuchów dla standardowej funkcji formatowania ... lub proc. Bwahaha.Ale hej, jeśli nie możesz oprzeć się okazji do monkeypatch, zawsze możesz nadać temu bardziej przejrzysty interfejs:
źródło
Stwórz swój własny
%o
format.Inicjator
config/initializers/srtftime.rb
Stosowanie
Możesz tego używać również z
Date
iDateTime
:źródło
Time
w Twoim projekcie?Chociaż Jonathan Tran powiedział, że szuka skróconego dnia tygodnia, a następnie skrótu miesiąca, myślę, że dla osób, które tu trafią, przydatne może być, aby wiedzieć, że Rails ma gotowe wsparcie dla bardziej powszechnie używany długi miesiąc, uporządkowana liczba całkowita dnia, po której następuje rok, jak w
June 1st, 2018
.Można to łatwo osiągnąć dzięki:
Lub:
Jeśli chcesz, możesz również trzymać się instancji czasu:
Więcej formatów i kontekstów dotyczących tworzenia niestandardowych można znaleźć w dokumentacji Rails API .
źródło