是否可以使用Jodatime生成随机日期时间,使得日期时间的格式为yyyy-MM-dd HH:MM:SS,它应该能够生成两个随机日期时间,其中Date2减去Date1将大于2分钟但不到60分钟。请提出一些方法。
答案 0 :(得分:12)
简单
long rangebegin = Timestamp.valueOf("2013-02-08 00:00:00").getTime();
long rangeend = Timestamp.valueOf("2013-02-08 00:58:00").getTime();
long diff = rangeend - rangebegin + 1;
Timestamp rand = new Timestamp(rangebegin + (long)(Math.random() * diff));
答案 1 :(得分:11)
这严格遵循您的要求(校正后的格式除外)。
Random random = new Random();
DateTime startTime = new DateTime(random.nextLong()).withMillisOfSecond(0);
Minutes minimumPeriod = Minutes.TWO;
int minimumPeriodInSeconds = minimumPeriod.toStandardSeconds().getSeconds();
int maximumPeriodInSeconds = Hours.ONE.toStandardSeconds().getSeconds();
Seconds randomPeriod = Seconds.seconds(random.nextInt(maximumPeriodInSeconds - minimumPeriodInSeconds));
DateTime endTime = startTime.plus(minimumPeriod).plus(randomPeriod);
DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
System.out.println(dateTimeFormatter.print(startTime));
System.out.println(dateTimeFormatter.print(endTime));
如果你运行这个,你会注意到你会得到多年的离谱价值,但这只是在DateTime(或者日期)的整个可能范围内生成随机DateTime的结果。但是,如果需要,可以将结束时间限制在特定范围内的相同技术应用于开始时间。
答案 2 :(得分:1)
基于任何日期都可以用长数表示的事实,看一下Date类的这个方法,http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Date.html#Date(long),你可以定义一个最大的Date1,比如说今天,并随机化这个数字几分钟即可添加。
换句话说:
答案 3 :(得分:1)
试
Random r = new Random();
long t1 = System.currentTimeMillis() + r.nextInt();
long t2 = t1 + 2 * 60 * 1000 + r.nextInt(60 * 1000) + 1;
DateTime d1 = new DateTime(t1);
DateTime d2 = new DateTime(t2);
答案 4 :(得分:-2)
你可以使用Math.random()生成一个随机数; 您可以使用此值。