不要忽视'日期和时间'部分。
答案 0 :(得分:60)
Time.at((date2.to_f - date1.to_f)*rand + date1.to_f)
您将获得两个给定日期时间之间的时间对象。
答案 1 :(得分:35)
您应该能够在一定范围内生成随机日期/时间。
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))
答案 2 :(得分:8)
使用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)
答案 3 :(得分:4)
使用time.to_i()
(请参阅课程Time
)将您的日期转换为整数,在这两个值之间随机化,然后使用Time.at()
重新转换为时间和日期。
答案 4 :(得分:2)
我不知道ruby但是你为什么不生成一个整数并将它与时间戳一起使用?然后只需将时间戳转换为您想要的格式。
答案 5 :(得分:1)
如果您知道中点两侧的中点和偏移范围,您可以使用我的ish gem:https://github.com/spilliton/ish
mid_date.ish(:offset => 60.days)
答案 6 :(得分:1)
Time.at(rand(Time.parse('some date').to_i..Time.now.to_i))
答案 7 :(得分:0)
计算两个日期之间的分钟差异,生成0到该数字之间的随机数,并将该分钟数添加到第一个日期。