Creating a random date in a specific range in JAVA

How to create random dates in a specific range in JAVA? I saw How to generate random integers in a specific range in Java? which is designed to generate random numbers. Is there a similar / different way to generate a random date in JAVA?

+4
source share
3 answers

Given that your question is unclear, I expect you to try to create a random one java.util.Datewith a given range.

Please note that java.util.Datecontains information about the date and time.

Date Java EPOCH. , , d1 d2 - Date, d1 < d2 ( ):

Date randomDate = new Date(ThreadLocalRandom.nextLong(d1.getTime(), d2.getTime()));

"" ( ), , ​​ LocalDate ( Java 8+ JODA).

, , d1 d2 LocalDate, d1 < d2 ():

int days = Days.daysBetween(d1, d2).toDays();
LocalDate randomDate = d1.addDays(ThreadLocalRandom.nextInt(days+1));
+9

-

    long random = ThreadLocalRandom.current().nextLong(startDate.getTime(), endDate.getTime());
    Date date = new Date(random);
+6

try it

    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
+5
source

Source: https://habr.com/ru/post/1658884/


All Articles