Quero exibir as datas no formato: dia curto da semana, mês curto, dia do mês sem zero inicial, mas incluindo o sufixo "th", "st", "nd" ou "rd".
Por exemplo, no dia em que essa pergunta foi feita, seria exibido "Qui 2 de outubro".
Estou usando o Ruby 1.8.7 e o Time.strftime simplesmente não parece fazer isso. Eu preferiria uma biblioteca padrão, se existir.
ruby-on-rails
ruby
date
Jonathan Tran
fonte
fonte
Respostas:
Use o método ordinalize em 'active_support'.
Observe que, se você estiver usando o IRB com Ruby 2.0, primeiro execute:
fonte
Você pode usar o método auxiliar de ordinalize do active_support em números.
fonte
Tomando a resposta de Patrick McKenzie um pouco mais longe, você pode criar um novo arquivo em seu
config/initializers
diretório chamadodate_format.rb
(ou o que você quiser) e colocar isso:Em seu código de exibição, você pode formatar qualquer data simplesmente atribuindo-lhe seu novo formato de data:
É simples, funciona e é fácil de construir. Basta adicionar mais linhas de formato no arquivo date_format.rb para cada um dos diferentes formatos de data. Aqui está um exemplo mais detalhado.
fonte
Time::DATE_FORMATS.merge!(:my_date => lambda { |time| time.strftime("%a, %b #{ActiveSupport::Inflector.ordinalize(time.day)}") })
fonte
Gosto da resposta de Bartosz, mas ei, já que estamos falando do Rails, vamos dar um passo em desonesto. (Edit: Embora eu fosse apenas monkeypatch o método a seguir, verifica-se que existe uma maneira mais limpa.)
DateTime
as instâncias têm umto_formatted_s
método fornecido pelo ActiveSupport, que usa um único símbolo como parâmetro e, se esse símbolo for reconhecido como um formato predefinido válido, retornará uma String com a formatação apropriada.Esses símbolos são definidos por
Time::DATE_FORMATS
, que é um hash de símbolos para cadeias de caracteres para a função de formatação padrão ... ou procs. Bwahaha.Mas, ei, se você não consegue resistir à oportunidade de monkeypatch, sempre pode oferecer uma interface mais limpa:
fonte
Crie seu próprio
%o
formato.Inicializador
config/initializers/srtftime.rb
Uso
Você pode usar isso com
Date
eDateTime
também:fonte
Time
no seu projeto?Embora Jonathan Tran tenha dito que estava procurando o dia abreviado da semana, primeiro seguido do mês abreviado, acho que pode ser útil para as pessoas que acabam aqui saber que o Rails tem suporte imediato para mais geralmente longo mês, inteiro ordinalizado do dia, seguido pelo ano, como em
June 1st, 2018
.Pode ser facilmente alcançado com:
Ou:
Você pode manter uma instância de tempo se desejar:
Você pode encontrar mais formatos e contexto sobre como criar um personalizado nos documentos da API do Rails .
fonte