¿Cómo formateo una fecha de rubí para incluir “r” como en “tercero” [duplicado]

StackOverflow https://stackoverflow.com/questions/1081926

  •  22-08-2019
  •  | 
  •  

Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

         

Quiero dar formato a un objeto de fecha para que pueda mostrar las cadenas como "3rd julio" o del "1er de Octubre". No puedo encontrar una opción en Date.strftime para generar la "r" y "c". Cualquiera sabe cómo hacer esto?

¿Fue útil?

Solución

Me voy a repetir todos los demás, pero sólo voy a animar a descargar la joya activesupport, por lo que sólo se puede utilizar como una biblioteca. No es necesario todos los carriles de usar ordinalize .

% gem install activesupport
...
% irb 
irb> require 'rubygems'
#=>  true
irb> require 'activesupport'
#=>  true
irb> 3.ordinalize
#=>  "3rd"

Otros consejos

A menos que estés utilizando Rieles , agregar este ordinalize método (código desvergonzadamente levantado de la fuente de carriles) para el Fixnum clase

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

A continuación, dar formato a la fecha de esta manera:

> now = Time.now
> puts now.strftime("#{now.day.ordinalize} of %B, %Y")
=> 4th of July, 2009
created_at.strftime("#{created_at.day.ordinalize} of %m, %y")

producirá "el 4 de Julio de 2009"

No creo que Ruby tiene, pero si usted tiene rieles, intente lo siguiente: -

puts 3.ordinalize #=> "3rd"

Parece que estoy revisando este tema por tercera vez, por lo que he actualizado mi GIST con algunos comentarios extra / uso.

https://gist.github.com/alterisian/4154152

Cheers, Ian.

No sé si lo hace mucho (cualquier?) Más rápido que el switch de los casos, pero he hecho una constante con las terminaciones:

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"]

A continuación, sólo lo utilizó como:

DAY_ENDINGS[date.mday]

Como quería el final dentro de un

<span>th</span>

require 'ActiveSupport'
1.ordinal =>
'st' 1.ordinalize => 'primero'

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top