Chcę sformatować obiekt daty, tak aby można było wyświetlić ciągi takie jak "3 lipca" lub "1 października". Nie mogę znaleźć opcji w Date.strftime, aby wygenerować "rd" i "st". Czy ktoś wie, jak to zrobić?Jak sformatować datę w ruby, aby dołączyć "rd", jak w "3rd"
Odpowiedz
Idę echo wszyscy inni, ale ja po prostu zachęcamy do pobrania activesupport
gem, więc można po prostu użyć go jako Biblioteka. Nie potrzebujesz wszystkich Railsów do korzystania z ordinalize
.
% gem install activesupport ... % irb irb> require 'rubygems' #=> true irb> require 'activesupport' #=> true irb> 3.ordinalize #=> "3rd"
Nie sądzę Ruby ma, ale jeśli masz Rails, spróbuj tego: -
puts 3.ordinalize #=> "3rd"
Jest również dostępny w Facets. – Pesto
created_at.strftime("#{created_at.day.ordinalize} of %m, %y")
będzie produkować "4 lipca 2009"
Musiałem dodać # przed {ale to działało, dzięki! – xenon
Jak można uporządkować zmienne łańcuchowe? Na przykład muszę obrócić% m. – Batman
To jest miłe, gdy trzeba użyć atypowego formatu "4 lipca", ale nie ma potrzeby ręcznego porządkowania ręcznie, jeśli używasz konwencjonalnego "4 lipca 2009": 'created_at.to_date.to_s (: long_ordinal)' . –
Chyba że jesteś stosując szyn, dodaj ordinalize sposób (kod shamelessly podnoszone ze źródła barierki) dostosowany jest do Fixnum klasy
class Fixnum
def ordinalize
if (11..13).include?(self % 100)
"#{self}th"
else
case self % 10
when 1; "#{self}st"
when 2; "#{self}nd"
when 3; "#{self}rd"
else "#{self}th"
end
end
end
end
następnie sformatować datę tak:
> now = Time.now
> puts now.strftime("#{now.day.ordinalize} of %B, %Y")
=> 4th of July, 2009
Należy pamiętać, że ta odpowiedź jest nieco nieaktualna. [Oto jak teraz wygląda] (https://github.com/rails/rails/blob/3f96b6973b82ad17e443dd1d21be05996fb6fbf0/activesupport/lib/active_support/inflector/methods.rb#L312-L347) i [tutaj jest rozszerzenie do 'Integer 'klasa] (https://github.com/rails/rails/blob/08754f12e65a9ec79633a605e986d0f1ffa4b251/activesupport/lib/active_support/core_ext/integer/inflections.rb). – Dennis
Wygląda na to, że powracam do tego tematu po raz trzeci, więc zaktualizowałem moje uwagi o dodatkowe komentarze/wykorzystanie.
https://gist.github.com/alterisian/4154152
Cheers, Ian.
ja nie wiem, czy to sprawia, że wiele (każdy?) Szybciej niż switch-case, ale zrobiłem stałą z zakończeń:
DAY_ENDINGS = ["th", "st", "nd", "rd", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "st", "nd", "rd", "th", "th", "th", "th", "th", "th", "th", "st"]
Następnie wystarczy stosować się podoba:
DAY_ENDINGS[date.mday]
jak chciałem zakończenie wewnątrz
<span>th</span>
require 'ActiveSupport'
1.ordinal => 'st'
1.ordinalize => '1st'
- 1. Jak sformatować datę w mm/dd/rrrr w Ruby?
- 2. Jak sformatować datę w xslt?
- 3. Jak sformatować datę w JSTL
- 4. Jak sformatować datę JavaScript?
- 5. Python: Jak sformatować datę w Jinja2?
- 6. Jak sformatować datę w siatce internetowej mvc
- 7. Jak sformatować datę wpisu w Wordpress?
- 8. Jak sformatować rejestrator ruby?
- 9. Jak sformatować datę i czas, aby program Excel ją zrozumiał?
- 10. Jak sformatować datę pochodzącą z MongoDB?
- 11. Jak sformatować datę za pomocą Dart?
- 12. Jak mogę sformatować datę w raporcie, aby dokładnie tak, jak chcę pojawiać - RDLC
- 13. Jak mogę uzyskać i sformatować wczorajszą datę w wierszu poleceń?
- 14. próbuje sformatować datę w szablonie jade
- 15. Jak sformatować datę w uniwersalnej aplikacji Windows Store (W8.1 + WP8.1)?
- 16. Jak sformatować datę w ISO za pomocą Pythona?
- 17. Jak sformatować datę jako ISO 8601 w pliku moment.js?
- 18. Jak sformatować numer/datę w szablonie play 2.0?
- 19. Jak sformatować datę na dzień w systemie Android?
- 20. Jak sformatować datę na arabski za pomocą polskich cyfr na datę i rok w JavaScript?
- 21. jak sformatować ciąg znaków za pomocą% w ruby?
- 22. Jak sformatować w formacie ISO 8601 datę z przesunięciem strefy czasowej w JavaScript?
- 23. Jak sformatować typ daty getUpdatedAt() w Symfony?
- 24. Jak sformatować bieżącą datę dla ustawień narodowych użytkownika?
- 25. Jak dołączyć obiekty JSON do siebie w Ruby
- 26. Rubymine - jak sformatować kod
- 27. Jak można ponownie sformatować tekst w TextMate
- 28. Jak sformatować liczby w JavaScript?
- 29. formatować datę przy użyciu Ruby on Rails
- 30. Jak uzyskać aktualną datę?
Dobra uwaga. Możesz również uzyskać tę funkcjonalność z aspektów (http: //facets.rubyforge.org) - wymagają "faset" lub, dla tej właśnie metody, wymagają "faset/integer/ordinal". –
Jak wyodrębnić just ordinalization? Chcę zrobić '' 3 th '' – Volte
Volte: '3.ordinalize.sub (/ \ w + /, ' \ 0')' – rampion