Parent

Date

Date

This new version of Date extension has been largely improved by porting some of the methods used by ActiveSupport. The old version already had much in common with the Active Support library, so it was decided to take it a step further in that direction for the sake of interoparability.

Hopefully most of these methods will find there way into Ruby’s own standard library eventually.

The biggest difference with ActiveSupport is the lack of many of the “English-esque” methods, and that we use stamp with Date::FORMAT, instead of to_formmated_s with Date::DATE_FORMATS. We do not override the standard to_s method like ActiveSupport does.

Constants

FORMAT

Public Class Methods

current() click to toggle source

Returns Time.zone.today when config.time_zone is set, otherwise just returns Date.today.

# File lib/standard/facets/date.rb, line 43
def self.current
  ::Time.zone_default ? ::Time.zone.today : ::Date.today
end
tomorrow() click to toggle source

Returns a new Date representing the date 1 day after today (i.e. tomorrow’s date).

# File lib/standard/facets/date.rb, line 38
def self.tomorrow
  ::Date.today.tomorrow
end
yesterday() click to toggle source

Returns a new Date representing the date 1 day ago (i.e. yesterday’s date).

# File lib/standard/facets/date.rb, line 33
def self.yesterday
  ::Date.today.yesterday
end

Public Instance Methods

advance(options) click to toggle source

Provides precise Date calculations for years, months, and days. The options parameter takes a hash with any of these keys: :years, :months, :weeks, :days.

# File lib/standard/facets/date.rb, line 137
def advance(options)
  d = self
  d = d >> options.delete(:years) * 12 if options[:years]
  d = d >> options.delete(:months)     if options[:months]
  d = d +  options.delete(:weeks) * 7  if options[:weeks]
  d = d +  options.delete(:days)       if options[:days]
  d
end
ago(seconds) click to toggle source

Converts Date to a Time (or DateTime if necessary) with the time portion set to the beginning of the day (0:00) and then subtracts the specified number of seconds

# File lib/standard/facets/date.rb, line 163
def ago(seconds)
  to_time.since(-seconds)
end
beginning_of_day() click to toggle source

Converts Date to a Time (or DateTime if necessary) with the time portion set to the beginning of the day (0:00).

# File lib/standard/facets/date.rb, line 177
def beginning_of_day
  to_time
end
Also aliased as: midnight
change(options) click to toggle source

Returns a new Date where one or more of the elements have been changed according to the options parameter.

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)
# File lib/standard/facets/date.rb, line 152
def change(options)
  ::Date.new(
    options[:year]  || self.year,
    options[:month] || self.month,
    options[:day]   || self.day
  )
end
days_in_month() click to toggle source

Returns the number of days in the date’s month.

Date.new(2004,2).days_in_month  #=> 29

CREDIT: Ken Kunz.

# File lib/standard/facets/date.rb, line 88
def days_in_month
   Date.civil(year, month, -1).day
end
days_of_month() click to toggle source
# File lib/standard/facets/date.rb, line 92
def days_of_month
  (1..days_in_month).to_a
end
in(seconds) click to toggle source
Alias for: since
midnight() click to toggle source
Alias for: beginning_of_day
month_name() click to toggle source

Get the month name for this date object

CREDIT: Benjamin Oakes

# File lib/standard/facets/date.rb, line 99
def month_name
  MONTHNAMES[self.month]
end
since(seconds) click to toggle source

Converts Date to a Time (or DateTime if necessary) with the time portion set to the beginning of the day (0:00) and then adds the specified number of seconds.

# File lib/standard/facets/date.rb, line 170
def since(seconds)
  to_time.since(seconds)
end
Also aliased as: in
stamp(format=:default) click to toggle source

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

This method is aliased to to_s.

date = Date.new(2007, 11, 10)   # Sat, 10 Nov 2007

date.stamp(:db)                 # => "2007-11-10"
date.stamp(:short)              # => "10 Nov"
date.stamp(:long)               # => "November 10, 2007"
date.stamp(:rfc822)             # => "10 Nov 2007"

Adding your own formats to stamp

You can add your own formats to the Date::FORMAT hash. Use the format name as the hash key and a strftime string as the value. Eg.

Date::FORMAT[:month_and_year] = "%B %Y"
# File lib/standard/facets/date.rb, line 121
def stamp(format=:default)
  if formatter = FORMAT[format]
    strftime(formatter)
  else
    to_s
  end
end
to_date() click to toggle source

A method to keep Time, Date and DateTime instances interchangeable on conversions. In this case, it simply returns self.

# File lib/standard/facets/date.rb, line 49
def to_date
  self
end
to_datetime() click to toggle source

Converts a Date instance to a DateTime, where the time is set to the beginning of the day and UTC offset is set to 0.

date = Date.new(2007, 11, 10)  # Sat, 10 Nov 2007
date.to_datetime               # Sat, 10 Nov 2007 00:00:00 0000
# File lib/standard/facets/date.rb, line 59
def to_datetime
  ::DateTime.civil(year, month, day, 0, 0, 0, 0)
end
to_time(form=:local) click to toggle source

Converts a Date instance to a Time, 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 2007

date.to_time                   # Sat Nov 10 00:00:00 0800 2007
date.to_time(:local)           # Sat Nov 10 00:00:00 0800 2007

date.to_time(:utc)             # Sat Nov 10 00:00:00 UTC 2007
# File lib/standard/facets/date.rb, line 73
def to_time(form=:local)
  ::Time.send(form, year, month, day)
  ##::Time.send("#{form}_time", year, month, day)
end
tomorrow() click to toggle source

Convenience method which returns a new Date/DateTime representing the time 1 day since the instance time.

# File lib/standard/facets/date.rb, line 190
def tomorrow
  self + 1
end
xmlschema() click to toggle source
# File lib/standard/facets/date.rb, line 79
def xmlschema
  to_time.xmlschema
end
yesterday() click to toggle source

Convenience method which returns a new Date/DateTime representing the time 1 day ago.

# File lib/standard/facets/date.rb, line 184
def yesterday
  self - 1
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.