Parent

DateTime

Public Class Methods

local_offset() click to toggle source
     # File lib/more/facets/date.rb, line 198
198:   def self.local_offset
199:     ::Time.local(2007).utc_offset.to_r / 86400
200:   end

Public Instance Methods

advance(options) click to toggle source

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.

     # File lib/more/facets/date.rb, line 284
284:   def advance(options)
285:     d = to_date.advance(options)
286:     datetime_advanced_by_date = change(:year => d.year, :month => d.month, :day => d.day)
287:     seconds_to_advance = (options[:seconds] || 0) + (options[:minutes] || 0) * 60 + (options[:hours] || 0) * 3600
288:     seconds_to_advance == 0 ? datetime_advanced_by_date : datetime_advanced_by_date.since(seconds_to_advance)
289:   end
ago(seconds) click to toggle source

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!

     # File lib/more/facets/date.rb, line 293
293:   def ago(seconds)
294:     self.since(-seconds)
295:   end
beginning_of_day() click to toggle source

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

     # File lib/more/facets/date.rb, line 305
305:   def beginning_of_day
306:     change(:hour => 0)
307:   end
Also aliased as: midnight
change(options) click to toggle source

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.

     # File lib/more/facets/date.rb, line 267
267:   def change(options)
268:     ::DateTime.civil(
269:       options[:year]  || self.year,
270:       options[:month] || self.month,
271:       options[:day]   || self.day,
272:       options[:hour]  || self.hour,
273:       options[:min]   || (options[:hour] ? 0 : self.min),
274:       options[:sec]   || ((options[:hour] || options[:min]) ? 0 : self.sec),
275:       options[:offset]  || self.offset,
276:       options[:start]  || self.start
277:     )
278:   end
end_of_day() click to toggle source

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

     # File lib/more/facets/date.rb, line 311
311:   def end_of_day
312:     change(:hour => 23, :min => 59, :sec => 59)
313:   end
future?() click to toggle source
     # File lib/more/facets/date.rb, line 202
202:   def future?
203:     self > ::DateTime.current
204:   end
getutc() click to toggle source
Alias for: utc
in(seconds) click to toggle source
Alias for: since
midnight() click to toggle source
Alias for: beginning_of_day
past?() click to toggle source
     # File lib/more/facets/date.rb, line 206
206:   def past?
207:     self < ::DateTime.current
208:   end
seconds_since_midnight() click to toggle source

Seconds since midnight: DateTime.now.seconds_since_midnight

     # File lib/more/facets/date.rb, line 258
258:   def seconds_since_midnight
259:     self.sec + (self.min * 60) + (self.hour * 3600)
260:   end
since(seconds) click to toggle source

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!

     # File lib/more/facets/date.rb, line 299
299:   def since(seconds)
300:     self + Rational(seconds.round, 86400)
301:   end
Also aliased as: in
stamp(format=:default) click to toggle source

Convert to a formatted string. See Time::FORMAT 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.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"
     # File lib/more/facets/date.rb, line 249
249:   def stamp(format=:default)
250:     if formatter = ::Time::FORMAT[format]
251:       strftime(formatter)
252:     else
253:       to_s
254:     end
255:   end
to_date() click to toggle source

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

     # File lib/more/facets/date.rb, line 211
211:   def to_date
212:     ::Date.new(year, month, day)
213:   end
to_datetime() click to toggle source

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

     # File lib/more/facets/date.rb, line 224
224:   def to_datetime
225:     self
226:   end
to_f() click to toggle source

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

     # File lib/more/facets/date.rb, line 343
343:   def to_f
344:     days_since_unix_epoch = self - ::DateTime.civil(1970)
345:     (days_since_unix_epoch * 86_400).to_f
346:   end
to_time() click to toggle source

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 lib/more/facets/date.rb, line 219
219:   def to_time
220:     self.offset == 0 ? ::Time.utc_time(year, month, day, hour, min, sec) : self
221:   end
utc() click to toggle source

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
     # File lib/more/facets/date.rb, line 322
322:   def utc
323:     new_offset(0)
324:   end
Also aliased as: getutc
utc?() click to toggle source

Returns true if offset == 0

     # File lib/more/facets/date.rb, line 328
328:   def utc?
329:     offset == 0
330:   end
utc_offset() click to toggle source

Returns the offset value in seconds

     # File lib/more/facets/date.rb, line 333
333:   def utc_offset
334:     (offset * 86400).to_i
335:   end
xmlschema() click to toggle source

Converts datetime to an appropriate format for use in XML

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

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.