Как мне отформатировать дату в ruby, чтобы включить “rd”, как в “3rd” [дубликат]
Вопрос
На этот вопрос уже есть ответ здесь:
Я хочу отформатировать объект date так, чтобы я мог отображать такие строки, как "3 июля" или "1 октября".Я не могу найти опцию в Date.strftime для генерации "rd" и "st".Кто-нибудь знает, как это сделать?
Решение
Я собираюсь повторить за всеми остальными, но я просто призываю вас загрузить activesupport
драгоценный камень, так что вы можете просто использовать его как библиотеку.Вам не нужно использовать все Rails для ordinalize
.
% gem install activesupport ... % irb irb> require 'rubygems' #=> true irb> require 'activesupport' #=> true irb> 3.ordinalize #=> "3rd"
Другие советы
Если только вы не используете Рельсы, добавьте это упорядочить метод (код бесстыдно взят из исходного кода Rails) для Фиксированный Номер класс
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
Затем отформатируйте свою дату следующим образом:
> 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")
Продюсирует "4 июля 2009"
Я не думаю, что у Ruby это есть, но если у вас есть Rails, попробуйте это:-
puts 3.ordinalize #=> "3rd"
Кажется, я возвращаюсь к этой теме в третий раз, поэтому я обновил свою суть некоторыми дополнительными комментариями / использованием.
https://gist.github.com/alterisian/4154152
Твое здоровье, Йен.
Я не знаю, делает ли это это настолько (вообще?) быстрее, чем switch-case , но я создал константу с окончаниями:
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"]
Затем просто использовал это как:
DAY_ENDINGS[date.mday]
Как я и хотел, концовка внутри
<span>th</span>
требуется "активная поддержка"
1.порядковый номер => 'st'
1.упорядочить => '1-й'