2017-02-23 90 views
1

我使用此代碼在Ruby中生成日期。生成隨機日期

DateTime.strptime("10/26/2015 07:09:52 AM", '%m/%d/%Y %I:%M:%S %p') 

我怎樣才能生成例如6個月範圍的隨機日期?

+0

你需要日期或日期時間? – ndn

+0

你能告訴我兩種選擇嗎? –

+0

我只是想要我的數字:) – sevenseacat

回答

2

我會使用一個更簡單的方法 - 如果我們假定說6個月15552000秒的輪數(86400 * 180),那麼你可以做:

Time.now - rand(15552000) 

要減去的隨機量從當前時間開始,在最近6個月內獲得一個隨機Time對象。

然後可以使用strftime它在你希望的任何格式來格式化:

(Time.now - rand(15552000)).strftime('%m/%d/%Y %I:%M:%S %p') 
=> "11/02/2016 12:04:05 AM" 

這也並不取決於on Rails的任何東西。

+0

完美解決方案! +1 –

0

從現在到未來6個月之間的隨機日期。

不設各月在30日:

now = DateTime.now 
six_months_later = now >> 6 

days_variance = (six_months_later - now).to_i 

random_moment = now + Rational(rand(days_variance * 86400), 86400) 

random_moment.strftime('%m/%d/%Y %I:%M:%S %p')