我最近开始学习Grails和Groovy并且很难在一定范围内生成日期。
我可以根据年份差异生成日期。但是如何添加月份和日期呢?
这就是我使用DatesUtils
获得的DateUtils.addYears(new Date() , -(18 + new Random().nextInt(20)))
这适用于根据年份生成日期。但我会一直在同一个月。如何在此添加一个月,以便我也可以将月份随机化
答案 0 :(得分:7)
另一种方法:
Date randomDate(Range<Date> range) {
range.from + new Random().nextInt(range.to - range.from + 1)
}
然后,你可以这样做:
def start = Date.parse('yyyy-MM-dd', '2015-01-01')
def end = Date.parse('yyyy-MM-dd', '2015-01-10')
println randomDate(start..end)
答案 1 :(得分:0)
看起来你正试图创建一个18到38年前的随机日期。如果这是真的,你可以这样做:
Date curdate = new Date()
// compute the beginning and end of the range that you want to find a date between.
// note, I used a simple 365 day year, but you could use Calendar or even DateUtils
// to compute the actual dates of 18 and 38 years ago
Date ago18yrs = curdate - (18*365)
Date ago38yrs = curdate - (38*365)
// compute the number of days in the range
int daysbetween = ago18yrs.minus( ago38yrs )
// add a random number of days in the range to the beginning of the range
Date randomdate = ago38yrs + new Random().nextInt(daysbetween)
此时,randomdate应该是18到38年前的随机日期。