【发布时间】:2016-10-20 13:49:19
【问题描述】:
我有一个关于随机生成日期的问题。所以我想做的是随机生成 1-30 之间的一天,1-12 之间的月份,默认情况下是 2016 年。
Random rand = new Random();
int date = 1 + rand.nextInt((30 - 1) + 1);
int month = 1 + rand.nextInt((12 - 1) + 1);
if(month == 1){
monthStr = "January";
}else if(month == 2){
monthStr = "February";
}else if(month == 3){
monthStr = "March";
}else if(month == 4){
monthStr = "April";
}else if(month == 5){
monthStr = "May";
}else if(month == 6){
monthStr = "June";
}else if(month == 7){
monthStr = "July";
}else if(month == 8){
monthStr = "August";
}else if(month == 9){
monthStr = "September";
}else if(month == 10){
monthStr = "October";
}else if(month == 11){
monthStr = "November";
}else if(month == 12){
monthStr = "December";
}
我使用 for 循环随机生成日期 100 次。然后,我将字符串附加在一起以将其存储到字符串数组列表中。
ArrayList<String> dateTimeList = new ArrayList<String>();
dateTimeList.add(date + " " + monthStr + " 2016");
之后,我将整个列表传递给另一个方法。在这种方法中,我试图再次生成随机日期,但在这种情况下,我需要生成一个在上述日期之后的日期。
换句话说,我第一次随机生成100个日期是申请日期。然后我将整个列表传递给另一个方法,在该方法中,我需要在每个提交日期之后生成另外 100 个日期。
任何想法我怎么能做到这一点?我知道还有其他方法可以生成随机日期,但我更喜欢这种方式,因为我将在其他地方使用它。
提前致谢。
【问题讨论】:
-
嗯,因为我会将这些日期插入数据库,并且它以特定格式工作,例如 2016 年 1 月 25 日。这就是我这样做的原因
-
您可以将日期转换为毫秒,然后将毫秒作为最小值传递给随机函数。您将从随机获得的数字解释为日期
-
@DimaSan 对不起,我认为这不是线程的重复。该线程要求的是在没有任何条件的情况下生成随机日期。但我问的是如何生成某个日期之后的日期。
-
您的解决方案中几个月内的第 31 天怎么样?那么2月30日呢?使用默认的 DateTime 类可以省去很多麻烦...
-
好吧,也许你是对的。但是是什么阻止您将此条件添加到工作解决方案中?