Sha256: 7ac9b50b1e9e4772998c538fcad01c5078d84a955f06cfe4546be54b12587fae

Contents?: true

Size: 1.48 KB

Versions: 12

Compression:

Stored size: 1.48 KB

Contents

require 'date'

module RandomData
  
  # Defines methods for random date generation
  
  module Dates
  
    # 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  
    #
    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
    
    # 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
    #
    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

  end
end

Version data entries

12 entries across 12 versions & 4 rubygems

Version Path
jjulian-random_data-1.5.0 lib/random_data/dates.rb
tomharris-random_data-1.5.1 lib/random_data/dates.rb
random_data-1.6.0 lib/random_data/dates.rb
random_data-1.5.2 lib/random_data/dates.rb
malvestuto_random_data-1.5.2 lib/random_data/dates.rb
malvestuto_random_data-1.5.1 lib/random_data/dates.rb
random_data-1.5.1 lib/random_data/dates.rb
random_data-1.2.0 lib/random_data/dates.rb
random_data-1.5.0 lib/random_data/dates.rb
random_data-1.3.0 lib/random_data/dates.rb
random_data-1.3.1 lib/random_data/dates.rb
random_data-1.2.1 lib/random_data/dates.rb