Saltar al contenido

Generando fecha aleatoria en un rango específico en JAVA

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.

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()));

Si en realidad es una “Fecha” (sin hora) que desea producir, que generalmente se representa por LocalDate (en Java 8+, o usando JODA Time).

Es tan fácil como asumir que d1 y d2 son LocalDate, con d1 < d2 (pseudocódigo):

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

Prueba esto

    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

Puedes hacer algo como esto

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

valoraciones y reseñas

Recuerda que tienes permiso de esclarecer si te fue útil.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *