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
*/