- #
- A
- B
- C
- D
- E
- F
- I
- M
- N
- R
- S
- T
- X
- Y
Constants
| DATE_FORMATS | = | {short: "%d %b",long: "%B %d, %Y",db: "%Y-%m-%d",inspect: "%Y-%m-%d",number: "%Y%m%d",long_ordinal: lambda { |date|day_format = ActiveSupport::Inflector.ordinalize(date.day)date.strftime("%B #{day_format}, %Y") # => "April 25th, 2007"},rfc822: "%d %b %Y",rfc2822: "%d %b %Y",iso8601: lambda { |date| date.iso8601 }} |
Attributes
| [RW] | beginning_of_week_default |
Class Public methods
beginning_of_week()Link
Returns the week start (e.g.:monday) for the current request, if this has been set (viaDate.beginning_of_week=). IfDate.beginning_of_week has not been set for the current request, returns the week start specified inconfig.beginning_of_week. If noconfig.beginning_of_week was specified, returns:monday.
beginning_of_week=(week_start)Link
SetsDate.beginning_of_week to a week start (e.g.:monday) for current request/thread.
This method accepts any of the following day symbols::monday,:tuesday,:wednesday,:thursday,:friday,:saturday,:sunday
current()Link
find_beginning_of_week!(week_start)Link
Returns week start day symbol (e.g.:monday), or raises anArgumentError for invalid day symbol.
Instance Public methods
acts_like_date?()Link
Duck-types as a Date-like class. SeeObject#acts_like?.
advance(options)Link
Provides preciseDate calculations for years, months, and days. Theoptions parameter takes a hash with any of these keys::years,:months,:weeks,:days.
The increments are applied in order of time units from largest to smallest. In other words, the date is incremented first by:years, then by:months, then by:weeks, then by:days. This order can affect the result around the end of a month. For example, incrementing first by months then by days:
Date.new(2004,9,30).advance(months:1,days:1)# => Sun, 31 Oct 2004
Whereas incrementing first by days then by months yields a different result:
Date.new(2004,9,30).advance(days:1).advance(months:1)# => Mon, 01 Nov 2004
ago(seconds)Link
at_beginning_of_day()Link
at_end_of_day()Link
at_midday()Link
at_middle_of_day()Link
at_midnight()Link
at_noon()Link
beginning_of_day()Link
change(options)Link
Returns a newDate where one or more of the elements have been changed according to theoptions parameter. Theoptions parameter is a hash with a combination of these keys::year,:month,:day.
Date.new(2007,5,12).change(day:1)# => Date.new(2007, 5, 1)Date.new(2007,5,12).change(year:2005,month:1)# => Date.new(2005, 1, 12)
end_of_day()Link
ConvertsDate to aTime (orDateTime if necessary) with the time portion set to the end of the day (23:59:59)
midday()Link
middle_of_day()Link
midnight()Link
noon()Link
readable_inspect()Link
Overrides the default inspect method with a human readable one, e.g., “Mon, 21 Feb 2005”
since(seconds)Link
ConvertsDate to aTime (orDateTime if necessary) with the time portion set to the beginning of the day (0:00) and then adds the specified number of seconds
to_fs(format = :default)Link
Convert to a formatted string. SeeDATE_FORMATS for predefined formats.
This method is aliased toto_formatted_s.
date =Date.new(2007,11,10)# => Sat, 10 Nov 2007date.to_fs(:db)# => "2007-11-10"date.to_formatted_s(:db)# => "2007-11-10"date.to_fs(:short)# => "10 Nov"date.to_fs(:number)# => "20071110"date.to_fs(:long)# => "November 10, 2007"date.to_fs(:long_ordinal)# => "November 10th, 2007"date.to_fs(:rfc822)# => "10 Nov 2007"date.to_fs(:rfc2822)# => "10 Nov 2007"date.to_fs(:iso8601)# => "2007-11-10"
Adding your own date formats toto_fs¶↑
You can add your own formats to theDate::DATE_FORMATS hash. Use the format name as the hash key and either a strftime string or Proc instance that takes a date argument as the value.
# config/initializers/date_formats.rbDate::DATE_FORMATS[:month_and_year] ='%B %Y'Date::DATE_FORMATS[:short_ordinal] =->(date) {date.strftime("%B #{date.day.ordinalize}") }
to_time(form = :local)Link
Converts aDate instance to aTime, where the time is set to the beginning of the day. The timezone can be either:local or:utc (default:local).
date =Date.new(2007,11,10)# => Sat, 10 Nov 2007date.to_time# => 2007-11-10 00:00:00 0800date.to_time(:local)# => 2007-11-10 00:00:00 0800date.to_time(:utc)# => 2007-11-10 00:00:00 UTC
NOTE: The:local timezone is Ruby’sprocess timezone, i.e.ENV['TZ']. If theapplication’s timezone is needed, then usein_time_zone instead.