Не упускайте часть "дата и время".
Как создать случайную дату и время между двумя датами?
Ответ 1
Time.at((date2.to_f - date1.to_f)*rand + date1.to_f)
Вы получите объект времени, который находится между двумя заданными датами.
Ответ 2
Вы должны иметь возможность генерировать случайные даты/время в определенном диапазоне.
now = Time.now
a_day_ago = now - 60 * 60 * 24
random_time = rand(a_day_ago..now)
# with activesupport required
up_to_a_year_ago = rand(1.year.ago..Time.now)
Ваши входные данные должны быть классом Time
или преобразованы в один.
Вы также можете сделать диапазон времени в эпоху, а затем использовать Time#at
.
now = Time.now.to_i
minute_ago = (Time.now - 60).to_i
Time.at(rand(minute_ago..now))
Ответ 3
Используйте time.to_i()
(см. класс Time
), чтобы преобразовать даты в целое число, рандомизировать между этими двумя значениями, а затем перевести на время и дату с помощью Time.at()
.
Ответ 4
Используйте метод rand()
.
require 'time'
t1 = Time.parse("2015-11-16 14:40:34")
t2 = Time.parse("2015-11-20 16:20:23")
puts rand(t1..t2)
Ответ 5
Я не знаю о рубине, но почему бы вам просто не сгенерировать целое число и использовать его вместе с меткой времени? Затем просто преобразуйте временную метку в нужный формат.
Ответ 6
Рассчитайте разницу между примерами минут между двумя датами, сгенерируйте случайное число от 0 до этого числа и добавьте это число минут до первой даты.
Ответ 7
Если вы знаете середину и диапазон смещения по обе стороны от средней точки, вы можете использовать мой драгоценный камень ish: https://github.com/spilliton/ish
mid_date.ish(:offset => 60.days)
Ответ 8
Time.at(rand(Time.parse('some date').to_i..Time.now.to_i))