This sounds trivial but it's annoying me.
The UK format for a full date would be Friday 11th January 2008 or 11th January 2008.
However, date.to_s(:long) gives "January 11, 2008"
Is there a way to get different dates out from it?
Cheers Theo
This sounds trivial but it's annoying me.
The UK format for a full date would be Friday 11th January 2008 or 11th January 2008.
However, date.to_s(:long) gives "January 11, 2008"
Is there a way to get different dates out from it?
Cheers Theo
This sounds trivial but it's annoying me.
The UK format for a full date would be Friday 11th January 2008 or 11th January 2008.
However, date.to_s(:long) gives "January 11, 2008"
Is there a way to get different dates out from it?
See the strftime method. I believe there is a way to add formats into Rails "to_s" extension as well, but you'd have to look into that. See ActiveSupport::CoreExtensions::Time::Conversions for more info.
time.strftime( string ) => string
Formats time according to the directives in the given format string. Any text not listed as a directive will be passed through to the output string.
Format meaning:
%a - The abbreviated weekday name (``Sun'') %A - The full weekday name (``Sunday'') %b - The abbreviated month name (``Jan'') %B - The full month name (``January'') %c - The preferred local date and time representation %d - Day of the month (01..31) %H - Hour of the day, 24-hour clock (00..23) %I - Hour of the day, 12-hour clock (01..12) %j - Day of the year (001..366) %m - Month of the year (01..12) %M - Minute of the hour (00..59) %p - Meridian indicator (``AM'' or ``PM'') %S - Second of the minute (00..60) %U - Week number of the current year, starting with the first Sunday as the first day of the first week (00..53) %W - Week number of the current year, starting with the first Monday as the first day of the first week (00..53) %w - Day of the week (Sunday is 0, 0..6) %x - Preferred representation for the date alone, no time %X - Preferred representation for the time alone, no date %y - Year without a century (00..99) %Y - Year with century %Z - Time zone name %% - Literal ``%'' character
t = Time.now t.strftime("Printed on %m/%d/%Y") #=> "Printed on 04/09/2003" t.strftime("at %I:%M%p") #=> "at 08:56A
To get the 11th you’ll need to use Inflector.ordinalize.
t = Time.now t.strftime(“%A”) + Inflector.ordinalize(t.strftime(“%d”)) + " " + t.strftime(“%B %Y”)
Cheers to both of you!
I'll give this a try
Okay,
I looked about and I just need to put this sort of thing in the environment.rb file:
ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.merge!( :uk_long => lambda { |time| time.strftime("%A #{time.day.ordinalize} %B %Y") } )
The long_ordinal format already puts the 'th' or whatever after the day so I just altered the code in the API for that version.
Cheers Theo
Theo Graham-brown wrote:
Okay,
I looked about and I just need to put this sort of thing in the environment.rb file:
ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.merge!( :uk_long => lambda { |time| time.strftime("%A #{time.day.ordinalize} %B %Y") } )
The long_ordinal format already puts the 'th' or whatever after the day so I just altered the code in the API for that version.
Cheers Theo
Actually that solution didn't work, but Ryan's did. I'll have to investigate further at some point.