Module: RandomData::Dates

Included in:
Random
Defined in:
lib/random_data/dates.rb

Overview

Defines methods for random date generation

Instance Method Summary collapse

Instance Method Details

#date(dayrange = 10) ⇒ Object

Returns a date within a specified range of days. If dayrange is an Integer, then the date returned will be plus or minus half what you specify. The default is ten days, so by default you will get a date within plus or minus five days of today.

If dayrange is a Range, then you will get a date the falls between that range

Example:

Random.date # => a Date /- 5 days of today Random.date(20) # => a Date /- 10 days of today Random.date(-60..-30) # => a Date between 60 days ago and 30 days ago



21
22
23
24
25
26
27
28
# File 'lib/random_data/dates.rb', line 21

def date(dayrange=10)
  if dayrange.is_a?(Range)
    offset = rand(dayrange.max-dayrange.min) + dayrange.min
  else
    offset = rand(dayrange*2) - dayrange
  end
  Date.today + offset
end

#date_between(range) ⇒ Object

Returns a date within the specified Range. The Range can be Date or String objects.

Example: min = Date.parse(‘1966-11-15’) max = Date.parse(‘1990-01-01’) Random.date(min..max) # => a Date between 11/15/1996 and 1/1/1990 Random.date(‘1966-11-15’..‘1990-01-01’) # => a Date between 11/15/1996 and 1/1/1990



38
39
40
41
42
43
44
# File 'lib/random_data/dates.rb', line 38

def date_between(range)
  min_date = range.min.is_a?(Date) ? range.min : Date.parse(range.min)
  max_date = range.max.is_a?(Date) ? range.max : Date.parse(range.max)

  diff = (max_date - min_date).to_i
  min_date + rand(diff)
end