class Faker::Date
Public Class Methods
backward(days = 365)
click to toggle source
# File lib/faker/date.rb, line 28 def backward(days = 365) from = ::Date.today - days to = ::Date.today - 1 between(from, to).to_date end
between(from, to)
click to toggle source
# File lib/faker/date.rb, line 4 def between(from, to) from = get_date_object(from) to = get_date_object(to) Faker::Base.rand_in_range(from, to) end
between_except(from, to, excepted)
click to toggle source
# File lib/faker/date.rb, line 11 def between_except(from, to, excepted) raise ArgumentError, 'From date, to date and excepted date must not be the same' if from == to && to == excepted excepted = get_date_object(excepted) loop do date = between(from, to) break date.to_date if date != excepted end end
birthday(min_age = 18, max_age = 65)
click to toggle source
# File lib/faker/date.rb, line 35 def birthday(min_age = 18, max_age = 65) t = ::Date.today from = birthday_date(t, max_age) to = birthday_date(t, min_age) between(from, to).to_date end
forward(days = 365)
click to toggle source
# File lib/faker/date.rb, line 21 def forward(days = 365) from = ::Date.today + 1 to = ::Date.today + days between(from, to).to_date end
Private Class Methods
birthday_date(date, age)
click to toggle source
# File lib/faker/date.rb, line 46 def birthday_date(date, age) year = date.year - age day = if date.day == 29 && date.month == 2 && !::Date.leap?(year) 28 else date.day end ::Date.new(year, date.month, day) end
get_date_object(date)
click to toggle source
# File lib/faker/date.rb, line 59 def get_date_object(date) date = ::Date.parse(date) if date.is_a?(::String) date = date.to_date if date.respond_to?(:to_date) date end