Converting datetimes to formatted strings, dates, and times.

Methods
Public Instance methods
formatted_offset(colon = true, alternate_utc_string = nil)

Returns the utc_offset as an +HH:MM formatted string. Examples:

  datetime = DateTime.civil(2000, 1, 1, 0, 0, 0, Rational(-6, 24))
  datetime.formatted_offset         # => "-06:00"
  datetime.formatted_offset(false)  # => "-0600"
    # File activesupport/lib/active_support/core_ext/date_time/conversions.rb, line 58
58:         def formatted_offset(colon = true, alternate_utc_string = nil)
59:           utc? && alternate_utc_string || utc_offset.to_utc_offset_s(colon)
60:         end
readable_inspect()

Overrides the default inspect method with a human readable one, e.g., "Mon, 21 Feb 2005 14:30:00 +0000"

    # File activesupport/lib/active_support/core_ext/date_time/conversions.rb, line 63
63:         def readable_inspect
64:           to_s(:rfc822)
65:         end
to_date()

Converts self to a Ruby Date object; time portion is discarded

    # File activesupport/lib/active_support/core_ext/date_time/conversions.rb, line 68
68:         def to_date
69:           ::Date.new(year, month, day)
70:         end
to_datetime()

To be able to keep Times, Dates and DateTimes interchangeable on conversions

    # File activesupport/lib/active_support/core_ext/date_time/conversions.rb, line 79
79:         def to_datetime
80:           self
81:         end
to_f()

Converts self to a floating-point number of seconds since the Unix epoch

    # File activesupport/lib/active_support/core_ext/date_time/conversions.rb, line 89
89:         def to_f
90:           seconds_since_unix_epoch.to_f
91:         end
to_formatted_s(format = :default)

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

This method is aliased to to_s.

Examples

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

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

Adding your own datetime formats to to_formatted_s

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}") }
    # File activesupport/lib/active_support/core_ext/date_time/conversions.rb, line 48
48:         def to_formatted_s(format = :default)
49:           return to_default_s unless formatter = ::Time::DATE_FORMATS[format]
50:           formatter.respond_to?(:call) ? formatter.call(self).to_s : strftime(formatter)
51:         end
to_i()

Converts self to an integer number of seconds since the Unix epoch

    # File activesupport/lib/active_support/core_ext/date_time/conversions.rb, line 94
94:         def to_i
95:           seconds_since_unix_epoch.to_i
96:         end
to_time()

Attempts to convert self to a Ruby Time object; returns self if out of range of Ruby Time class If self has an offset other than 0, self will just be returned unaltered, since thereā€˜s no clean way to map it to a Time

    # File activesupport/lib/active_support/core_ext/date_time/conversions.rb, line 74
74:         def to_time
75:           self.offset == 0 ? ::Time.utc_time(year, month, day, hour, min, sec) : self
76:         end
xmlschema()

Converts datetime to an appropriate format for use in XML

    # File activesupport/lib/active_support/core_ext/date_time/conversions.rb, line 84
84:         def xmlschema
85:           strftime("%Y-%m-%dT%H:%M:%S%Z")
86:         end