Method: DateTime#to_fs

Defined in:
activesupport/lib/active_support/core_ext/date_time/conversions.rb

#to_fs(format = :default) ⇒ Object Also known as: to_formatted_s

Convert to a formatted string. See Time::DATE_FORMATS for predefined formats.

This method is aliased to to_formatted_s.

Examples

datetime = DateTime.civil(2007, 12, 4, 0, 0, 0, 0)   # => Tue, 04 Dec 2007 00:00:00 +0000

datetime.to_fs(:db)            # => "2007-12-04 00:00:00"
datetime.to_formatted_s(:db)   # => "2007-12-04 00:00:00"
datetime.to_fs(:number)        # => "20071204000000"
datetime.to_fs(:short)         # => "04 Dec 00:00"
datetime.to_fs(:long)          # => "December 04, 2007 00:00"
datetime.to_fs(:long_ordinal)  # => "December 4th, 2007 00:00"
datetime.to_fs(:rfc822)        # => "Tue, 04 Dec 2007 00:00:00 +0000"
datetime.to_fs(:iso8601)       # => "2007-12-04T00:00:00+00:00"

Adding your own datetime formats to to_fs

DateTime formats are shared with Time. You can add your own to the Time::DATE_FORMATS hash. Use the format name as the hash key and either a strftime string or Proc instance that takes a time or datetime argument as the value.

# config/initializers/time_formats.rb
Time::DATE_FORMATS[:month_and_year] = '%B %Y'
Time::DATE_FORMATS[:short_ordinal] = lambda { |time| time.strftime("%B #{time.day.ordinalize}") }


35
36
37
38
39
40
41
# File 'activesupport/lib/active_support/core_ext/date_time/conversions.rb', line 35

def to_fs(format = :default)
  if formatter = ::Time::DATE_FORMATS[format]
    formatter.respond_to?(:call) ? formatter.call(self).to_s : strftime(formatter)
  else
    to_s
  end
end