Desidero formattare un oggetto data in modo che sia possibile visualizzare stringhe come "3 luglio" o "1 ° ottobre". Non riesco a trovare un'opzione in Date.strftime per generare "rd" e "st". Qualcuno sa come farlo?Come formattare una data in ruby per includere "rd" come in "3rd"
risposta
ho intenzione di eco tutti gli altri, ma mi limiterò a vi incoraggio a scaricare il activesupport
gemma, così puoi semplicemente utilizzarlo come una biblioteca. Non hai bisogno di tutti i Rails per usare ordinalize
.
% gem install activesupport ... % irb irb> require 'rubygems' #=> true irb> require 'activesupport' #=> true irb> 3.ordinalize #=> "3rd"
Non credo Ruby ha, ma se si dispone di Rails, provate questo: -
puts 3.ordinalize #=> "3rd"
È disponibile anche in Facets. – Pesto
created_at.strftime("#{created_at.day.ordinalize} of %m, %y")
produrrà "4 lug 2009"
Ho dovuto aggiungere un # davanti {ma questo ha funzionato bene Grazie! – xenon
come ordinalizzare le variabili stringa? Ho bisogno di girare% m per esempio. – Batman
Questo è bello quando è necessario utilizzare il formato atipico "4 luglio" ma non è necessario ordinalizzare a mano se si utilizza il convenzionale "4 luglio 2009": 'created_at.to_date.to_s (: long_ordinal)' . –
meno che non sei utilizzando Rails, aggiungere questo metodo di ordinalize (codice spudoratamente sollevato dalla sorgente Rails) al Fixnum classe
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
quindi formattare la data in questo modo:
> now = Time.now
> puts now.strftime("#{now.day.ordinalize} of %B, %Y")
=> 4th of July, 2009
Si noti che questa risposta è un po 'obsoleta. [Ecco come appare ora] (https://github.com/rails/rails/blob/3f96b6973b82ad17e443dd1d21be05996fb6fbf0/activesupport/lib/active_support/inflector/methods.rb#L312-L347) e [ecco l'estensione all 'Integer 'classe] (https://github.com/rails/rails/blob/08754f12e65a9ec79633a605e986d0f1ffa4b251/activesupport/lib/active_support/core_ext/integer/inflections.rb). – Dennis
Sembra sto rivisitare questo argomento per la terza volta, quindi ho aggiornato il mio succo con qualche extra commenti/utilizzo.
https://gist.github.com/alterisian/4154152
Cheers, Ian.
Non so se rende molto (qualsiasi?) Più veloce di switch-case, ma ho fatto una costante con le terminazioni:
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"]
Poi basta lo usavano come:
DAY_ENDINGS[date.mday]
come avrei voluto il finale all'interno di un
<span>th</span>
richiedono 'ActiveSupport'
1.ordinal => 'st'
1.ordinalize => '1st'
- 1. Come formattare una data in VisualForce?
- 2. Formattare la data utilizzando Ruby on Rails
- 3. Come generare una data casuale in Ruby?
- 4. Come formattare una stringa con float in Ruby usando # {variabile}?
- 5. Come includere una condizione all'interno di una stringa in Ruby
- 6. Python: Come posso formattare una data in Jinja2?
- 7. come formattare data ora atomo
- 8. Come posso formattare la data per locale in Java?
- 9. Come formattare il ruby logger?
- 10. come formattare l'output della stringa usando% in ruby?
- 11. Come formattare LocalDate in stringa?
- 12. Come formattare il ruby logger su questo?
- 13. Come posso formattare una data proveniente da MongoDB?
- 14. Come posso formattare la data in jQuery datetimepicker?
- 15. Come formattare la data con il giorno in Android?
- 16. Java: impossibile formattare l'oggetto dato come data
- 17. Come formattare una stringa in un'espressione linq?
- 18. Come formattare la stringa della data in java?
- 19. Come posso formattare la data in ISO usando Python?
- 20. Come formattare una data UTC per utilizzare il designatore Z (Zulu) della zona in PHP?
- 21. Includere immagini nei file di documentazione R-package (.Rd)
- 22. Formattare una data in javascript fino al millisecondo
- 23. Come formattare una data in gg/mm/aaaa HH: mm: formato ss in JavaScript?
- 24. come eccezione per data ruby non valida
- 25. Includere i file in una riga di comando con Ruby
- 26. Come includere una console in Winforms?
- 27. Come formattare una stringa in caso Pascal in XSLT?
- 28. Come includere le virgolette in una stringa
- 29. come formattare getdate in YYYYMMDDHHmmSS
- 30. Come estendere il test Ruby :: Unità per includere assert_false?
Buon punto. È anche possibile ottenere questa funzionalità dalle faccette (http: //facets.rubyforge.org) library - richiede 'facet' o, per questo metodo, richiede 'facet/integer/ordinal' –
Come si estrae solo l'ordinalizzazione? Voglio '' 3 th '' – Volte
Volte: '3.ordinalize.sub (/ \ w + /, ' \ 0')' – rampion