Подтвердить что ты не робот

Как создать случайную дату и время между двумя датами?

Не упускайте часть "дата и время".

4b9b3361

Ответ 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))