How do I format a date in ruby to include "rd" as in "3rd"
I'm going to echo everyone else, but I'll just encourage you to download the activesupport
gem, so you can just use it as a library. You don't need all of Rails to use ordinalize
.
% gem install activesupport ... % irb irb> require 'rubygems' #=> true irb> require 'activesupport' #=> true irb> 3.ordinalize #=> "3rd"
created_at.strftime("#{created_at.day.ordinalize} of %m, %y")
Will produce "4th of July, 2009"
Unless you're using Rails, add this ordinalize method (code shamelessly lifted from the Rails source) to the Fixnum class
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
Then format your date like this:
> now = Time.now
> puts now.strftime("#{now.day.ordinalize} of %B, %Y")
=> 4th of July, 2009
I don't think Ruby has it, but if you have Rails, try this:-
puts 3.ordinalize #=> "3rd"