不要忽略“日期和时间”部分。
问问题
16868 次
8 回答
62
Time.at((date2.to_f - date1.to_f)*rand + date1.to_f)
您将获得一个介于两个给定日期时间之间的时间对象。
于 2010-04-21T14:42:17.620 回答
41
您应该能够在一定范围内生成随机日期/时间。
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))
于 2012-08-16T21:43:46.277 回答
10
使用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)
于 2015-11-17T01:03:41.953 回答
5
使用time.to_i()
(参见 class Time
)将您的日期转换为整数,在这两个值之间随机化,然后使用 重新转换为时间和日期Time.at()
。
于 2010-04-21T14:39:28.530 回答
2
我不知道红宝石,但你为什么不直接生成一个整数并将它与时间戳一起使用呢?然后只需将时间戳转换为您想要的格式。
于 2010-04-21T14:35:51.657 回答
1
如果您知道中点两侧的中点和偏移范围,您可以使用我的 ish gem:https ://github.com/spiilliton/ish
mid_date.ish(:offset => 60.days)
于 2013-08-01T16:03:07.283 回答
1
Time.at(rand(Time.parse('some date').to_i..Time.now.to_i))
于 2016-07-27T18:04:13.707 回答
0
例如计算两个日期之间的分钟差,生成一个介于 0 和该数字之间的随机数,并将该分钟数添加到第一个日期。
于 2010-04-21T14:37:59.293 回答