Quiero mostrar las fechas en el formato: día corto de la semana, mes corto, día del mes sin cero a la izquierda pero incluyendo el sufijo "th", "st", "nd" o "rd".
Por ejemplo, el día en que se hizo esta pregunta aparecería "Jue 2 de octubre".
Estoy usando Ruby 1.8.7, y Time.strftime simplemente no parece hacer esto. Prefiero una biblioteca estándar si existe.
ruby-on-rails
ruby
date
Jonathan Tran
fuente
fuente
Respuestas:
Use el método ordinalize de 'active_support'.
Tenga en cuenta que si está utilizando IRB con Ruby 2.0, primero debe ejecutar:
fuente
Puede usar el método de ayuda ordinalize de active_support en los números.
fuente
Llevando la respuesta de Patrick McKenzie un poco más lejos, podría crear un nuevo archivo en su
config/initializers
directorio llamadodate_format.rb
(o lo que quiera) y poner esto en él:Luego, en su código de vista, puede formatear cualquier fecha simplemente asignándole su nuevo formato de fecha:
Es simple, funciona y es fácil de construir. Simplemente agregue más líneas de formato en el archivo date_format.rb para cada uno de sus diferentes formatos de fecha. Aquí hay un ejemplo más detallado.
fuente
Time::DATE_FORMATS.merge!(:my_date => lambda { |time| time.strftime("%a, %b #{ActiveSupport::Inflector.ordinalize(time.day)}") })
fuente
Me gusta la respuesta de Bartosz, pero bueno, ya que estamos hablando de Rails, vamos a dar un paso adelante con desviaciones. (Editar: aunque solo iba a usar monkeypatch con el siguiente método, resulta que hay una forma más limpia).
DateTime
las instancias tienen unto_formatted_s
método proporcionado por ActiveSupport, que toma un solo símbolo como parámetro y, si ese símbolo se reconoce como un formato predefinido válido, devuelve una Cadena con el formato apropiado.Esos símbolos están definidos por
Time::DATE_FORMATS
, que es un hash de símbolos para cadenas para la función de formateo estándar ... o procs. BwahahaPero oye, si no puedes resistir la oportunidad de hacer parches, siempre puedes darle una interfaz más limpia:
fuente
Crea tu propio
%o
formato.Inicializador
config/initializers/srtftime.rb
Uso
Puede usar esto con
Date
yDateTime
también:fuente
Time
en su proyecto?Aunque Jonathan Tran dijo que estaba buscando el día abreviado de la semana seguido por el mes abreviado, creo que podría ser útil para las personas que terminan aquí saber que Rails tiene soporte inmediato para más mes largo comúnmente utilizable, entero de día ordinalizado, seguido del año, como en
June 1st, 2018
.Se puede lograr fácilmente con:
O:
También puede apegarse a una instancia de tiempo si lo desea:
Puede encontrar más formatos y contexto sobre cómo crear uno personalizado en los documentos de la API de Rails .
fuente