How to create a list of random dates in Java

1 Answer

0 votes
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ThreadLocalRandom;

public class RandomDates {

    // Generate a random date between two years using LocalDate
    public static LocalDate randomDate(int startYear, int endYear) {

        // Convert start and end years to timestamps
        LocalDate start = LocalDate.of(startYear, 1, 1);
        LocalDate end   = LocalDate.of(endYear, 12, 31);

        long startEpoch = start.toEpochDay();
        long endEpoch   = end.toEpochDay();

        // Uniform distribution over the timestamp range
        long randomEpoch = ThreadLocalRandom.current().nextLong(startEpoch, endEpoch + 1);

        // Convert back to LocalDate
        return LocalDate.ofEpochDay(randomEpoch);
    }

    public static void main(String[] args) {

        List<LocalDate> dates = new ArrayList<>();

        for (int i = 0; i < 10; i++) {
            dates.add(randomDate(1990, 2030));
        }

        for (LocalDate d : dates) {
            System.out.println(d.getYear() + "-" +
                               d.getMonthValue() + "-" +
                               d.getDayOfMonth());
        }
    }
}



/*
run:

1990-2-9
2007-6-24
1999-4-20
2029-2-6
2010-7-31
2011-9-26
2017-10-24
2026-11-27
1997-10-9
2009-10-21

*/

 



answered 2 hours ago by avibootz
...