### Home Classes Methods

### In Files

- lib/facets/date.rb

### Parent

Object

### Methods

- ::current
- ::tomorrow
- ::yesterday
- #advance
- #ago
- #beginning_of_day
- #change
- #days_in_month
- #days_of_month
- #in
- #midnight
- #month_name
- #since
- #stamp
- #to_date
- #to_datetime
- #to_time
- #tomorrow
- #xmlschema
- #yesterday

### Files

- README.rdoc

### Class/Module Index

Quicksearch

- Random
- Random::ArrayExtensions
- Random::HashExtensions
- Random::IntegerExtensions
- Random::NumericExtensions
- Random::RangeExtensions
- Random::StringExtensions
- Random::StringExtensions::Self
- FileUtils
- FileUtils::DryRun
- FileUtils::NoWrite
- FileUtils::Verbose
- Digest
- Digest::Class
- Digest::Instance
- Multiton
- Multiton::Inclusive
- Multiton::MetaMethods
- URI
- URI::Hash
- URI::Kernel
- Argvector
- Argvector
- ERB
- ERB::OpenTemplate
- Enumerable
- Enumerable::Arguments
- GetoptLong
- GetoptLong::DSL
- Memoizable
- Memoizable::Copy
- Numeric
- Numeric::Multipliers
- Object
- Object::ArgVector
- Timer
- Timer::Dummy
- Array
- BasicObject
- CGI
- Cloneable
- Continuation
- Date
- DateTime
- Equitable
- File
- Find
- Hash
- Instantiable
- Integer
- Interval
- Kernel
- Math
- Module
- Net
- NilClass
- NullClass
- OpEsc
- OpenStruct
- Pathname
- Platform
- Range
- RbConfig
- Set
- Shellwords
- String
- StringScanner
- Time
- Tuple
- YAML
- Zlib

No matching classes.

# 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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/facets/date.rb, line 190
    def tomorrow
      self + 1
    end

xmlschema() click to toggle source

    # File lib/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/facets/date.rb, line 184
    def yesterday
      self - 1
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.