Ash*_*mar 6 java algorithm date
如何在JAVA中生成特定范围内的随机日期?我已经看到如何在Java中的特定范围内生成随机整数?生成随机数的链接.在JAVA中有类似/其他种类的方式来生成随机数吗?
Adr*_*hum 13
鉴于您的问题不明确,我希望您尝试java.util.Date
使用给定范围生成随机数.
请注意,java.util.Date
其中包含日期+时间信息.
Date
在Java中,用EPOCH的毫秒数表示.因此,最简单的方法是做你想要的,给定d1和d2是Date
,和d1 <d2(伪代码):
Date randomDate = new Date(ThreadLocalRandom.current()
.nextLong(d1.getTime(), d2.getTime()));
Run Code Online (Sandbox Code Playgroud)
如果它实际上是您想要生成的"日期"(没有时间),通常由LocalDate
(在Java 8+中,或使用JODA时间)表示.
假设d1和d2 LocalDate
与d1 < d2
(伪代码)一样容易:
int days = Days.daysBetween(d1, d2).toDays();
LocalDate randomDate = d1.addDays(ThreadLocalRandom.nextInt(days+1));
Run Code Online (Sandbox Code Playgroud)
试试这个
LocalDate startDate = LocalDate.of(1990, 1, 1); //start date
long start = startDate.toEpochDay();
System.out.println(start);
LocalDate endDate = LocalDate.now(); //end date
long end = endDate.toEpochDay();
System.out.println(start);
long randomEpochDay = ThreadLocalRandom.current().longs(start, end).findAny().getAsLong();
System.out.println(LocalDate.ofEpochDay(randomEpochDay)); // random date between the range
Run Code Online (Sandbox Code Playgroud)
你可以做这样的事情
long random = ThreadLocalRandom.current().nextLong(startDate.getTime(), endDate.getTime());
Date date = new Date(random);
Run Code Online (Sandbox Code Playgroud)