Class DateTime
In: lib/facets/standard/facets/date.rb
Parent: Object

Methods

Public Class methods

[Source]

# File lib/facets/standard/facets/date.rb, line 200
  def self.local_offset
    ::Time.local(2007).utc_offset.to_r / 86400
  end

Public Instance methods

Uses Date to provide precise Time calculations for years, months, and days. The options parameter takes a hash with any of these keys: :years, :months, :weeks, :days, :hours, :minutes, :seconds.

[Source]

# File lib/facets/standard/facets/date.rb, line 286
  def advance(options)
    d = to_date.advance(options)
    datetime_advanced_by_date = change(:year => d.year, :month => d.month, :day => d.day)
    seconds_to_advance = (options[:seconds] || 0) + (options[:minutes] || 0) * 60 + (options[:hours] || 0) * 3600
    seconds_to_advance == 0 ? datetime_advanced_by_date : datetime_advanced_by_date.since(seconds_to_advance)
  end

Returns a new DateTime representing the time a number of seconds ago Do not use this method in combination with x.months, use months_ago instead!

[Source]

# File lib/facets/standard/facets/date.rb, line 295
  def ago(seconds)
    self.since(-seconds)
  end

Returns a new DateTime representing the start of the day (0:00)

[Source]

# File lib/facets/standard/facets/date.rb, line 307
  def beginning_of_day
    change(:hour => 0)
  end

Returns a new DateTime where one or more of the elements have been changed according to the options parameter. The time options (hour, minute, sec) reset cascadingly, so if only the hour is passed, then minute and sec is set to 0. If the hour and minute is passed, then sec is set to 0.

[Source]

# File lib/facets/standard/facets/date.rb, line 269
  def change(options)
    ::DateTime.civil(
      options[:year]  || self.year,
      options[:month] || self.month,
      options[:day]   || self.day,
      options[:hour]  || self.hour,
      options[:min]   || (options[:hour] ? 0 : self.min),
      options[:sec]   || ((options[:hour] || options[:min]) ? 0 : self.sec),
      options[:offset]  || self.offset,
      options[:start]  || self.start
    )
  end

Returns a new DateTime representing the end of the day (23:59:59)

[Source]

# File lib/facets/standard/facets/date.rb, line 313
  def end_of_day
    change(:hour => 23, :min => 59, :sec => 59)
  end

[Source]

# File lib/facets/standard/facets/date.rb, line 204
  def future?
    self > ::DateTime.current
  end
getutc()

Alias for utc

in(seconds)

Alias for since

midnight()

Alias for beginning_of_day

[Source]

# File lib/facets/standard/facets/date.rb, line 208
  def past?
    self < ::DateTime.current
  end

Seconds since midnight: DateTime.now.seconds_since_midnight

[Source]

# File lib/facets/standard/facets/date.rb, line 260
  def seconds_since_midnight
    self.sec + (self.min * 60) + (self.hour * 3600)
  end

Returns a new DateTime representing the time a number of seconds since the instance time Do not use this method in combination with x.months, use months_since instead!

[Source]

# File lib/facets/standard/facets/date.rb, line 301
  def since(seconds)
    self + Rational(seconds.round, 86400)
  end

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

This method is aliased to to_s.

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

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

Adding your own datetime formats to stamp

DateTime formats are shared with Time. You can add your own to the Time::FORMAT hash. Use the format name as the hash key and a strftime string as the value. Eg.

  Time::FORMAT[:month_and_year] = "%B %Y"

[Source]

# File lib/facets/standard/facets/date.rb, line 251
  def stamp(format=:default)
    if formatter = ::Time::FORMAT[format]
      strftime(formatter)
    else
      to_s
    end
  end

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

[Source]

# File lib/facets/standard/facets/date.rb, line 213
  def to_date
    ::Date.new(year, month, day)
  end

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

[Source]

# File lib/facets/standard/facets/date.rb, line 226
  def to_datetime
    self
  end

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

[Source]

# File lib/facets/standard/facets/date.rb, line 345
  def to_f
    days_since_unix_epoch = self - ::DateTime.civil(1970)
    (days_since_unix_epoch * 86_400).to_f
  end

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.

[Source]

# File lib/facets/standard/facets/date.rb, line 221
  def to_time
    self.offset == 0 ? ::Time.utc_time(year, month, day, hour, min, sec) : self
  end

Adjusts DateTime to UTC by adding its offset value; offset is set to 0

Example:

  DateTime.civil(2005,2,21,10,11,12,Rational(-6, 24))      # Mon, 21 Feb 2005 10:11:12 -0600
  DateTime.civil(2005,2,21,10,11,12,Rational(-6, 24)).utc  # Mon, 21 Feb 2005 16:11:12 +0000

[Source]

# File lib/facets/standard/facets/date.rb, line 324
  def utc
    new_offset(0)
  end

Returns true if offset == 0

[Source]

# File lib/facets/standard/facets/date.rb, line 330
  def utc?
    offset == 0
  end

Returns the offset value in seconds

[Source]

# File lib/facets/standard/facets/date.rb, line 335
  def utc_offset
    (offset * 86400).to_i
  end

Converts datetime to an appropriate format for use in XML

[Source]

# File lib/facets/standard/facets/date.rb, line 340
  def xmlschema
    strftime("%Y-%m-%dT%H:%M:%S%Z")
  end

[Validate]