Te sugerimos que revises esta resolución en un ambiente controlado antes de pasarlo a producción, saludos.
Solución:
Dado que su pregunta no está clara, espero que esté tratando de generar aleatoriamente java.util.Date
con rango dado.
Tenga en cuenta que java.util.Date
contiene información de fecha y hora.
Si en realidad es una “Fecha” (sin hora) que desea producir, que generalmente se representa por Es tan fácil como asumir que d1 y d2 son Prueba esto Puedes hacer algo como esto Recuerda que tienes permiso de esclarecer si te fue útil.Date
en Java está representado por milisegundos de EPOCH. Por lo tanto, la forma más fácil de hacer lo que quiere es, dado que d1 y d2 es Date
, y d1 Date randomDate = new Date(ThreadLocalRandom.current()
.nextLong(d1.getTime(), d2.getTime()));
LocalDate
(en Java 8+, o usando JODA Time).LocalDate
, con d1 < d2
(pseudocódigo):int days = Days.daysBetween(d1, d2).toDays();
LocalDate randomDate = d1.addDays(
ThreadLocalRandom.current().nextInt(days+1));
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
long random = ThreadLocalRandom.current().nextLong(startDate.getTime(), endDate.getTime());
Date date = new Date(random);
valoraciones y reseñas